コンストラクターにはさまざまなバージョンがあり、web.configからの情報を使用するもの、ホストを指定するもの、ホストとポートを指定するものがあります。しかし、ユーザー名とパスワードをweb.configとは異なるものに設定するにはどうすればよいですか?内部のsmtpがいくつかの高セキュリティクライアントによってブロックされている問題があり、それらのsmtpサーバーを使用したいのですが、web.configの代わりにコードからこれを行う方法はありますか?
この場合、たとえばデータベースから何も使用できない場合、web.config資格情報をどのように使用しますか?
public static void CreateTestMessage1(string server, int port)
{
string to = "[email protected]";
string from = "[email protected]";
string subject = "Using the new SMTP client.";
string body = @"Using this new feature, you can send an e-mail message from an application very easily.";
MailMessage message = new MailMessage(from, to, subject, body);
SmtpClient client = new SmtpClient(server, port);
// Credentials are necessary if the server requires the client
// to authenticate before it will send e-mail on the client's behalf.
client.Credentials = CredentialCache.DefaultNetworkCredentials;
try {
client.Send(message);
}
catch (Exception ex) {
Console.WriteLine("Exception caught in CreateTestMessage1(): {0}",
ex.ToString());
}
}
SmtpClientはコードで使用できます。
SmtpClient mailer = new SmtpClient();
mailer.Host = "mail.youroutgoingsmtpserver.com";
mailer.Credentials = new System.Net.NetworkCredential("yourusername", "yourpassword");
NetworkCredential
を使用
はい、これらの2行をコードに追加するだけです。
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("username", "password");
client.Credentials = credentials;
SmtpClient MyMail = new SmtpClient();
MailMessage MyMsg = new MailMessage();
MyMail.Host = "mail.eraygan.com";
MyMsg.Priority = MailPriority.High;
MyMsg.To.Add(new MailAddress(Mail));
MyMsg.Subject = Subject;
MyMsg.SubjectEncoding = Encoding.UTF8;
MyMsg.IsBodyHtml = true;
MyMsg.From = new MailAddress("username", "displayname");
MyMsg.BodyEncoding = Encoding.UTF8;
MyMsg.Body = Body;
MyMail.UseDefaultCredentials = false;
NetworkCredential MyCredentials = new NetworkCredential("username", "password");
MyMail.Credentials = MyCredentials;
MyMail.Send(MyMsg);