Exchange Online (Office 365) 経由で System.Net.Mail を使用して SMTP メールを送信する 質問する

Exchange Online (Office 365) 経由で System.Net.Mail を使用して SMTP メールを送信する 質問する

新しい Office 365 ベータ版をテストしており、Exchange Online サービスにメール アカウントを持っています。現在、テスト アカウントから SMTP メールを送信できる LOB アプリケーションを接続しようとしています。

ただし、Exchange 365 プラットフォームではポート 587 での TLS 暗号化が必要であり、System.Net.Mail暗黙的な SSL 暗号化を許可しない「機能」があります。

このプラットフォーム経由で C# でメールを送信できた人はいますか?

メールを送信するための次の基本コードがあります。アドバイスをいただければ幸いです。

SmtpClient server = new SmtpClient("ServerAddress");
server.Port = 587;
server.EnableSsl = true;
server.Credentials = new System.Net.NetworkCredential("[email protected]", "password");
server.Timeout = 5000;
server.UseDefaultCredentials = false;

MailMessage mail = new MailMessage();
mail.From = new MailAddress("recipent@anyaddress");
mail.To.Add("[email protected]");
mail.Subject = "test out message sending";
mail.Body = "this is my message body";
mail.IsBodyHtml = true;

server.Send(mail);

ベストアンサー1

上記の動作コード内のいくつかのタイプミスを修正しました:

MailMessage msg = new MailMessage();
msg.To.Add(new MailAddress("[email protected]", "SomeOne"));
msg.From = new MailAddress("[email protected]", "You");
msg.Subject = "This is a Test Mail";
msg.Body = "This is a test message using Exchange OnLine";
msg.IsBodyHtml = true;

SmtpClient client = new SmtpClient();
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("your user name", "your password");
client.Port = 587; // You can use Port 25 if 587 is blocked (mine is!)
client.Host = "smtp.office365.com";
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = true;
try
{
    client.Send(msg);
    lblText.Text = "Message Sent Succesfully";
}
catch (Exception ex)
{
    lblText.Text = ex.ToString();
}

上記のコードを使用した Web アプリケーションが 2 つありますが、どちらも問題なく正常に動作します。

おすすめ記事