SecureSocketOptions.SslOnConnect)SecureSocketOptions.StartTls)message.From 必須與授權碼對應的郵箱一致。SendAsync 異常需訂閱 SendCompleted 事件或改用 Send 同步捕獲。using MailKit.Net.Smtp;
using MimeKit;
public void SendMail() {
var message = new MimeMessage();
message.From.Add(new MailboxAddress("發件人", "654321@qq.com"));
message.To.Add(new MailboxAddress("收件人", "123456@qq.com"));
message.Subject = "SUBJECT SUBJECT";
message.Body = new TextPart("plain") { Text = "Body Body" };
using (var client = new SmtpClient()) {
client.Connect("smtp.qq.com", 465, SecureSocketOptions.SslOnConnect);
client.Authenticate("654321@qq.com", "授權碼"); // 非登錄密碼
client.Send(message);
client.Disconnect(true);
}
}
client.ServerCertificateValidationCallback = (s,c,h,e) => true; 忽略證書驗證(僅測試)。SmtpCommandException、SmtpProtocolException 打印詳細錯誤碼。telnet smtp.qq.com 465。若 SMTP 受限,可對接 HTTP API 發信服務(SendGrid、阿里雲郵件推送、郵件推送),可靠性更高。