无需硬编码用户名和密码即可发送电子邮件

fun*_*err 11 c# email gmail

有没有办法从C#发送电子邮件而无需使用Gmail SMTP手动编码我的用户名和密码?

我知道有一些软件可以看到源代码,我真的不喜欢他们看到我的Gmail密码.

Chr*_*isF 7

您不应该在其他人正在运行的应用程序中使用您的用户名和密码.

修改应用程序,以便它提示用户输入他们的电子邮件证书,并使用这些.

这必须存储在配置文件中,除非您存储散列加密密码,否则仍可由其他人读取.

  • 你可以做什么惠特哈希pswd? (4认同)
  • 详细说明ralu的观点....不要散列密码,加密密码.如果在Windows上,我将使用用户+机器DPAPI加密并存储在注册表中. (2认同)

lak*_*k-b 5

第一种选择:将用户名和密码存储在配置中

using System.Net.Mail;

var fromEmail = ConfigurationSettings.AppSettings[ "mail" ]; 
var fromPassword = ConfigurationSettings.AppSettings[ "pass" ]; 

var fromAddress = new MailAddress(fromEmail, "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
           {
               Host = "smtp.gmail.com",
               Port = 587,
               EnableSsl = true,
               DeliveryMethod = SmtpDeliveryMethod.Network,
               UseDefaultCredentials = false,
               Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
           };
using (var message = new MailMessage(fromAddress, toAddress)
                     {
                         Subject = subject,
                         Body = body
                     })
{
    smtp.Send(message);
}
Run Code Online (Sandbox Code Playgroud)

在app.config中:

  <appSettings>
    <add key="mail" value="somemail@gmail.com" />
    <add key="pass" value="password" />
  </appSettings>
Run Code Online (Sandbox Code Playgroud)

您也可以通过加密来制作安全的配置文件。

第二种选择:从用户那里读取用户名和密码

  • web.config文件有一个用于SMTP设置的特殊部分。在应用程序设置中优先于此设置:http://blog.dotnetclr.com/archive/2009/08/18/511.aspx (2认同)