17

Exchange Online サービスのメール アカウントを持っています。現在、C# アプリケーションを使用して (様々なドメインおよび Microsoft Office 365 で) 顧客にメールを送信できるかどうかをテストしようとしています。

以下のコードを実装しようとしましたが、エラーが発生しています

「検証手順によると、リモート証明書は無効です。」

MailMessage mail = null;                
mail = new MailMessage();

string[] strToList = "abc@gmail.com"              
foreach (string strID in strToList)
{
    if (strID != null)
    {
        mail.To.Add(new MailAddress(strID));
    }
}

mail.From = "demo@onmicrosoft.com";
mail.Subject = "testing"
mail.IsBodyHtml = true;
mail.Body = "mail body";

SmtpClient client = new SmtpClient("smtp.outlook.office365.com");
client.Port = 587;
client.EnableSsl = true;
client.UseDefaultCredentials = false;
NetworkCredential cred = new System.Net.NetworkCredential("demo@onmicrosoft.com", "mypassword");
client.Credentials = cred;
client.Send(mail);

私が何か間違ったことをしている場合は、アドバイスをお願いします。よろしくお願いします。

4

8 に答える 8

6

c# から SMTP として smtp.office365.com を使用すると、TLS 認証が問題を引き起こす場合があります。Send(msg) ステートメントの前に次の行を試してください (.TargetName をオーバーライドします)。

client.TargetName = "STARTTLS/smtp.office365.com";

これは私のために働く

于 2014-06-12T05:16:03.970 に答える
3

smtp.outlook.office365.com の代わりに smtp.office365.com を試してください

于 2014-03-02T22:06:16.677 に答える
1

設定してみてください:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

サービスの SecurityPoint が TLS であることを確認します。
ここで提供される設定に回答があることに注意してください

ServicePointManager.ServerCertificateValidationCallback = 
    (sender, certificate, chain, sslPolicyErrors) => true;

テスト目的には適しているかもしれませんが、これは重大なセキュリティ リスクです。
本番アカウントまたは本番環境では使用しないでください。

于 2018-08-14T08:10:45.893 に答える