问题描述
我使用 MSAL 库发送 O365 邮件。在前端(angular)生成访问令牌并将令牌传递给后端(.Net)以发送邮件。之后抛出异常“535:5.7.3 身份验证不成功”。但是如果我在后端生成令牌并传递给发送邮件的代码,它就可以正常工作。
试试{ var email1 = new MimeMessage();
email1.From.Add(MailBoxAddress.Parse(request.UserEmail));
email1.To.Add(MailBoxAddress.Parse("chathura.ishan9@gmail.com"));
email1.Subject = "Test Email Subject";
email1.Body = new TextPart(textformat.Html) { Text = "<h1>Example HTML Message Body</h1>" };
using (var client = new SmtpClient(new ProtocolLogger(Console.OpenStandardOutput())))
{
try
{
client.Connect("smtp.office365.com",587,SecureSocketoptions.StartTls);
var oauth21 = new SaslMechanismOAuth2(request.UserEmail,request.Token);
client.Authenticate(oauth21);
client.Send(email1);
client.disconnect(true);
}
catch (Exception ex)
{
Console.WriteLine(ex);
throw;
}
}
解决方法
这与 Angular 的 MSAL 库无关。问题是您的 Office 365 帐户的 SMTP 身份验证被禁用。为了验证您的 Office 365 帐户,第三方应用程序使用 SMTP 提交。您可以使用以下说明激活 SMTP 身份验证。可以在 Exchange Online 中启用或禁用经过身份验证的客户端 SMTP 提交 (SMTP AUTH)。