我在Asp.Net Core 1.1中创建了一个WebApi,它在Azure中托管。发送电子邮件是本Api的一部分。为此,我使用MailKit.SmtpClient和以下代码:
using (var client = new SmtpClient())
{
client.LocalDomain = "smtp.office365.com";
await client.ConnectAsync("smtp.office365.com", 587, SecureSocketOptions.StartTls).ConfigureAwait(false);
client.AuthenticationMechanisms.Remove("XOAUTH2");
client.Authenticate(Constants.AccountData.Login, Constants.AccountData.Password);
await client.SendAsync(mimeMessage).ConfigureAwait(false);
await client.DisconnectAsync(true).ConfigureAwait(false);
}
直到上周它才能运作良好。从那以后,每次我做
client.Authenticate(Constants.AccountData.Login, Constants.AccountData.Password);
我成为错误535 5.7.3身份验证失败 我检查了O365帐户,我通常可以使用Microsoft登录页面和我们在应用程序中使用的凭据登录O365。可以肯定的是,我们更改了此帐户的密码,但这没有帮助。
我决定将App迁移到.Net Core 2.0并使用.NET库中的SmtpClient进行检查。我将迁移的应用程序发布到Azure并配置了SmtpClient,如本文所述 - > https://blogs.msdn.microsoft.com/benjaminperkins/2017/01/11/sending-email-from-an-azure-web-app-using-an-o365-smtp-server/
现在我变成了Timeout(操作已经超时了。)。
当属性EnableSsl = false时,我变成了其他错误,连接不安全。
我也尝试过设置属性
client.TargetName = "STARTTLS/smtp.office365.com";
但它没有帮助。
有谁知道我该怎么做才能让它发挥作用?
我觉得问题出在其他地方(可能在o365),但我不知道在哪里看......任何建议都会非常有帮助。