簡體   English   中英

MailKit C# SmtpClient.Connect() 到 smtp.Office365.com 拋出異常:“根據驗證程序,遠程證書無效。”

[英]MailKit C# SmtpClient.Connect() to smtp.Office365.com throwing exception: "The remote certificate is invalid according to the validation procedure."

我正在使用 MailKit(版本 1.18.0)並在連接到 SMTP Office 365 時出現以下錯誤。

SmtpClient client = new SmtpClient();

連接方式:

client.Connect("smtp.Office365.com", 587, true);

錯誤消息: “由於意外的數據包格式,握手失敗”

我在網上搜索了這個場景,發現對於少數人來說,它是通過使用 useSSL false value 來解決的。 然后我嘗試為 useSSL 傳遞 false 但得到無效的遠程證書錯誤。

client.Connect("smtp.Office365.com", 587, false);

錯誤消息: “根據驗證程序,遠程證書無效。”

再次研究后,發現我們應該嘗試不同的重載方法來連接啟動TLS。

client.Connect("smtp.Office365.com", 587, SecureSocketOptions.StartTls);

錯誤消息: “根據驗證程序,遠程證書無效。”

如果我從同一台服務器運行下面的 powershell,它工作正常。 它發送電子郵件沒有問題。

$emailFrom = "from@example.com"
$emailto = "to@example.com"
$Subject = "Test SMTP"
$Body = "Test from Server"
$SMTPServer = "smtp.office365.com"
$SMTPClient = New-Object Net.Mail.SMTPClient($SMTPServer, 587)
$SMTPClient.enablessl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password")
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

我也在端口 25 上嘗試了上述內容,但遇到了同樣的問題。 此問題僅發生在使用 MailKit 的 smtp.Office365.com 主機上。 任何幫助或建議將不勝感激。

使用以下代碼:

client.ServerCertificateValidationCallback = (s, c, ch, e) => true;
client.Connect("smtp.Office365.com", 587, SecureSocketOptions.StartTls);

它也可以使用下面的代碼工作。

client.ServerCertificateValidationCallback = (s, c, ch, e) => true;
client.Connect("smtp.Office365.com", 587, false);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM