尝试通过Office 365发送电子邮件时出现c# – SMTP 5.7.57错误

我正在尝试设置一些代码来通过Office 365’s authenticated SMTP service发送电子邮件:

var _mailServer = new SmtpClient();
_mailServer.UseDefaultCredentials = false;
_mailServer.Credentials = new NetworkCredential("test.user@mydomain.com", "password");
_mailServer.Host = "smtp.office365.com";
_mailServer.TargetName = "STARTTLS/smtp.office365.com"; // same behaviour if this lien is removed
_mailServer.Port = 587;
_mailServer.EnableSsl = true;

var eml = new MailMessage();
eml.Sender = new MailAddress("test.user@mydomain.com");
eml.From = eml.Sender;
eml.to = new MailAddress("test.recipient@anotherdomain.com");
eml.Subject = "Test message";
eml.Body = "Test message body";

_mailServer.Send(eml);

这似乎不起作用,我看到一个例外:

The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
at System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, String from)
at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)
at System.Net.Mail.SmtpClient.Send(MailMessage message)

我已经尝试过enabling network tracing并且看起来安全通信已经建立(例如,我在日志中看到“STARTTLS”命令中的一行,后来日志中有一行“用户验证远程证书是有效的. “,以下Send()和Receive()数据不能作为纯文本读取,并且似乎不包含任何TLS / SSH恐慌)

我可以使用相同的电子邮件地址和密码登录到http://portal.office.com/并使用Outlook电子邮件Web邮件发送和阅读电子邮件,那么在以编程方式发送电子邮件时可能导致身份验证失败的原因是什么?

有没有办法额外调试加密流?

最佳答案
在我的情况下,在我没有运气的情况下尝试了所有这些建议之后,我联系了Microsoft支持,他们的建议只是更改密码.

这解决了我的问题.

请注意,密码未过期,因为我成功登录了office365,但重置解决了问题.

获得的经验:不信任Office 365密码到期日期,在我的情况下,密码将在1-2个月后过期,但它无法正常工作.
这导致我在我的代码中进行调查,并且仅在很长一段时间后才意识到问题出在Office365密码中“已损坏”或“过早过期”.

不要忘记每3个月“刷新”一次密码.

转载注明原文:尝试通过Office 365发送电子邮件时出现c# – SMTP 5.7.57错误 - 代码日志