我已经在我的C#Web应用程序中使用Mailkit一段时间了。以前从未遇到任何问题,但是今天当我尝试发送时,我开始收到以下错误:
身份验证异常: 错误正在处理: 4.7.0 临时服务器错误。请稍后重试。PRX4 [SYXPR01CA0117.ausprd01.prod.outlook.com] 证实
我最初运行的是 MailKit 1.6,但发生这种情况时,我将 Mailkit 升级到 2.4 以尝试解决此问题。
以下是我用来发送电子邮件的代码。
using (var client = new SmtpClient())
{
client.LocalDomain = "smtp.office365.com";
await client.ConnectAsync("smtp.office365.com", 587, SecureSocketOptions.StartTls).ConfigureAwait(false);
client.Authenticate("EmailAddress", "Password");
await client.SendAsync(emailMessage).ConfigureAwait(false);
await client.DisconnectAsync(true).ConfigureAwait(false);
}
如果有人遇到此问题或有一些想法可以解决这个问题,请告诉我!
打电话给Microsoft确认他们目前不相信他们的交换服务器有问题。
更新
经过更多的测试确认,我可以远程登录到office365的实例。 我还可以使用以下代码使用Powershell发送电子邮件
$msolcred = get-credential
Send-MailMessage –From emailaddress –To emailaddress –Subject “Test Email” –Body “Test” -SmtpServer smtp.office365.com -Credential $msolcred -UseSsl -Port 587
该错误消息来自您的SMTP服务器,而不是MailKit。该错误似乎表明它确实是临时服务器问题。
另外值得注意的是:没有MailKit 2.4这样的东西。最新版本是 1.16.1。
尝试添加到下一行:
client.AuthenticationMechanisms.Remove("XOAUTH2");
所以你的代码可以是:
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("EmailAddress", "Password");
await client.SendAsync(emailMessage).ConfigureAwait(false);
await client.DisconnectAsync(true).ConfigureAwait(false);
}