SMTPを使用してメッセージを送信する新しいASP.NET Webアプリケーションを作成します。問題は、smtpがメッセージの送信者から認証されなかったことです。
プログラムでSMTPを認証するにはどうすればよいですか? C#には、ユーザー名とパスワードを入力するための属性を持つクラスがありますか?
using System.Net;
using System.Net.Mail;
using(SmtpClient smtpClient = new SmtpClient())
{
var basicCredential = new NetworkCredential("username", "password");
using(MailMessage message = new MailMessage())
{
MailAddress fromAddress = new MailAddress("[email protected]");
smtpClient.Host = "mail.mydomain.com";
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = basicCredential;
message.From = fromAddress;
message.Subject = "your subject";
// Set IsBodyHtml to true means you can send HTML email.
message.IsBodyHtml = true;
message.Body = "<h1>your message body</h1>";
message.To.Add("[email protected]");
try
{
smtpClient.Send(message);
}
catch(Exception ex)
{
//Error, could not send the message
Response.Write(ex.Message);
}
}
}
上記のコードを使用できます。
必ずSmtpClient.Credentials
afterSmtpClient.UseDefaultCredentials = false
を呼び出して設定してください。
SmtpClient.UseDefaultCredentials = false
を設定するとSmtpClient.Credentials
がnullにリセットされるため、順序は重要です。
メッセージを送信する前に Credentials プロパティを設定します。
TLS/SSLを介してメッセージを送信するには、SmtpClientクラスのSslをtrueに設定する必要があります。
string to = "[email protected]";
string from = "[email protected]";
MailMessage message = new MailMessage(from, to);
message.Subject = "Using the new SMTP client.";
message.Body = @"Using this new feature, you can send an e-mail message from an application very easily.";
SmtpClient client = new SmtpClient(server);
// Credentials are necessary if the server requires the client
// to authenticate before it will send e-mail on the client's behalf.
client.UseDefaultCredentials = true;
client.EnableSsl = true;
client.Send(message);
メッセージはどのように送信しますか?
System.Net.Mail
名前空間内のクラス(おそらく使用するものです)は、Web.configで指定されるか、SmtpClient.Credentials
プロパティを使用して、認証を完全にサポートします。
私の場合、上記のすべてを実行した後でもです。内部交換2010メールサーバーに対して認証するには、プロジェクトを.net 3.5から.net 4にアップグレードする必要がありました。