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 つは、このコードがチーム ファウンデーション サービスにチェックインされるため、チーム全体が資格情報を知る必要があることです。問題 2 は、難読化は可能ですが、問題 1 は解決しないということです。
私が見つけた解決策に最も近いのは、インストール手順としてのアプリ構成の暗号化です。これは問題 1 を回避しませんが、必要に応じて実行できます。
この状況は本番アプリケーションで発生しますか? また、C# クラスをインスタンス化するために必要なパスワードを保存するためにどのようなベスト プラクティスが使用されていますか?