我正在编写一个需要发送 SMTP 电子邮件的 C# 类。我在这个 SO 问题中找到了代码,它给了我发送电子邮件所需的内容(SO 问题)
为方便起见,这是我根据上述问题的答案修改的代码:
using System.Net;
using System.Net.Mail;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
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);
}
我遇到的问题是该问题中的代码需要将 smtp 密码存储在纯文本 C# 源文件中。问题之一是该代码将被签入团队基础服务,因此整个团队都必须/了解凭据。问题二是混淆是可能的,但它不能解决问题 1。
我发现最接近的解决方案是将应用程序配置加密作为安装步骤。这无法解决问题 1,但如有必要,可以完成。
这种情况是否出现在生产应用程序中,以及使用哪些最佳实践来存储实例化 C# 类所需的密码?