当我尝试通过我的C#代码发送邮件时,上面显示错误。我搜索了可能的所有解决方案,但我没有得到解决方案。我使用以下代码:
MailMessage mail = new MailMessage("SenderMail",Email);
mail.IsBodyHtml = true;
mail.Subject = "An email from Office365";
mail.Body = "<html><body><h1>Hello world</h1></body></html>";
SmtpClient client = new SmtpClient("smtp.office365.com");
client.Port = 587;
client.EnableSsl = true;
client.UseDefaultCredentials = false; // Important: This line of code must be executed before setting the NetworkCredentials object, otherwise the setting will be reset (a bug in .NET)
NetworkCredential cred = new System.Net.NetworkCredential("Sendermail", "Password");
client.Credentials = cred;
client.Send(mail);
答案 0 :(得分:2)
1-我相信您的代码中缺少以下内容。
client.DeliveryMethod = SmtpDeliveryMethod.Network;
2-不要将UseDefaultCredentials值设置为false。将其保持为默认值。只需删除该行。
这对我有用。
答案 1 :(得分:0)
如果您还没有,那么我相信您可能需要启用从您的Office365帐户发送客户端。有关详细信息,请参阅this page。
答案 2 :(得分:0)
上下文:我遇到了同样的错误,并且我认为我的凭据很好,因为它每天都可以正常工作。我尝试调试,在Internet中寻找解决方案(即使在这个stackoverflow问题线程中),我花了很多时间也没有取得好结果。
解决方案:最后,我在outlook Web客户端上尝试了“假定正确”的凭据并登录。结果:我收到此消息:“ 您的密码已过期!< / em> 然后我在Web客户端中更新了密码,更新了凭据和代码,就是这样,它照常工作了。
其他信息:您可以考虑将密码(加密)保存在其他地方(而不是源代码中),以便可以轻松更新。