有没有办法从C#发送电子邮件而无需使用Gmail SMTP手动编码我的用户名和密码?
我知道有一些软件可以看到源代码,我真的不喜欢他们看到我的Gmail密码。
有没有办法从C#发送电子邮件而无需使用Gmail SMTP手动编码我的用户名和密码?
我知道有一些软件可以看到源代码,我真的不喜欢他们看到我的Gmail密码。
您不应该在其他人正在运行的应用程序中使用您的用户名和密码。
修改应用程序,以便提示用户 其 电子邮件凭据并使用它们。
这必须存储在配置文件中,除非您存储,否则仍可由其他人读取 哈希加密密码。
第一个选项:在config中存储用户名和密码
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);
}
在app.config中:
<appSettings>
<add key="mail" value="somemail@gmail.com" />
<add key="pass" value="password" />
</appSettings>
您也可以通过加密来制作安全的配置文件。
第二个选项:从用户读取用户名和密码
对您的Web服务器进行HTTP POST,该服务器将代表应用程序发送电子邮件。您可能需要一些方法来验证POST是否真的来自您的应用程序,因此您需要对应用程序的密钥进行硬编码,但由于您可以控制服务器部分,因此可以阻止发现被滥用的密钥。
或者,创建一个二次一次性Gmail帐户,您可以使用该帐户向主帐户发送电子邮件,然后将其转发给目标收件人。
所有这些对我来说似乎很愚蠢,最终最好的解决方案取决于你打算如何发送电子邮件。
如果您在ASP.NET中运行,那么您可以 加密web.config文件的各个部分 使用 aspnet_regiis.exe工具。
如果您正在运行带有app.config文件的常规应用程序,那么您可以加密整个文件,或仅加密文件的一部分,如Jon Galloway在其博客文章中所述 “加密.NET app.config文件中的密码”。
一旦在配置文件中有了这个,就可以使用了 SecureString
类 从配置文件中获取您的用户名/密码选项,并将它们加密到内存中,直到它们需要/使用的最后一刻。
将用户名和密码存储在配置文件中......
在配置文件中外部化特定于环境的配置 - 尤其是诸如凭据之类的敏感配置。
ASP.NET IIS注册工具可以为您做到这一点。您只需键入一行即可。检查 http://odetocode.com/blogs/scott/archive/2006/01/08/encrypting-custom-configuration-sections.aspx。