Unable to send email from Office 365 using c# SmtpClient
尝试使用SmtpClient从c#中的Winforms应用发送电子邮件。通过这篇MS文章,它应该可以工作。我搜索了许多论坛等,但没有找到任何解决方案。该错误消息似乎表明客户端未通过身份验证。密码是正确的,我已经以该用户身份使用该密码登录并可以正常使用。 2FA已启用,但htis应该不会妨碍它?
我检查过的东西都在适当的地方
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | var userName ="[email protected]"; var password ="password"; var msg = new MailMessage(); msg.To.Add(new MailAddress("[email protected]")); msg.From = new MailAddress(userName); msg.Subject ="Test Office 365 Account"; msg.Body ="Testing email using Office 365 account."; msg.IsBodyHtml = true; var client = new SmtpClient{ Host ="smtp.office365.com", Credentials = new System.Net.NetworkCredential(userName, password), Port = 587, DeliveryMethod = SmtpDeliveryMethod.Network, EnableSsl = true }; client.Send(msg); |
异常
-
SMTP服务器需要安全连接,否则客户端将无法连接
已验证。服务器响应为:5.7.57 SMTP;客户不是
经过验证可在MAIL FROM期间发送匿名邮件
邮件工具包的实施(建议vasily.sib)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | var message = new MimeMessage(); message.From.Add(new MailboxAddress("Test User","[email protected]")); message.To.Add(new MailboxAddress("Gmail User","[email protected]")); message.Subject ="test"; message.Body = new TextPart("plain") { Text = @"test" }; var client = new SmtpClient(new ProtocolLogger("imap.log")); // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS) client.ServerCertificateValidationCallback = (s, c, h, e) => true; client.Connect("smtp.office365.com", 587, SecureSocketOptions.Auto); //this is fine and it connects var clientAuthenticationMechanisms = client.AuthenticationMechanisms; client.AuthenticationMechanisms.Remove("XOAUTH2"); // Note: only needed if the SMTP server requires authentication client.Authenticate("[email protected]","password"); // this is where it fails with Authentication Failure client.Send(message); client.Disconnect(true); |
邮件工具包日志输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Connected to smtp://smtp.office365.com:587/?starttls=when-available S: 220 SYCP282CA0015.outlook.office365.com Microsoft ESMTP MAIL Service ready at Mon, 25 Nov 2019 04:49:36 +0000 C: EHLO [192.168.2.50] S: 250-SYCP282CA0015.outlook.office365.com Hello [58.6.92.82] S: 250-SIZE 157286400 S: 250-PIPELINING S: 250-DSN S: 250-ENHANCEDSTATUSCODES S: 250-STARTTLS S: 250-8BITMIME S: 250-BINARYMIME S: 250-CHUNKING S: 250 SMTPUTF8 C: STARTTLS S: 220 2.0.0 SMTP server ready C: EHLO [192.168.2.50] S: 250-SYCP282CA0015.outlook.office365.com Hello [58.6.92.82] S: 250-SIZE 157286400 S: 250-PIPELINING S: 250-DSN S: 250-ENHANCEDSTATUSCODES S: 250-AUTH LOGIN XOAUTH2 S: 250-8BITMIME S: 250-BINARYMIME S: 250-CHUNKING S: 250 SMTPUTF8 C: AUTH LOGIN REMOVED BASE64 DATA (password, login) S: 535 5.7.3 Authentication unsuccessful [SYCP282CA0015.AUSP282.PROD.OUTLOOK.COM] |
已解决。正是2FA阻止了它的发生。关闭它,它起作用了