0

我正在使用 MSAL 库发送 O365 邮件。在前端(角度)生成访问令牌并将令牌传递给后端(.Net)以发送邮件。之后抛出异常“535: 5.7.3 Authentication unsuccessful”。但是,如果我在后端生成令牌并传递给发送邮件的代码,它就可以正常工作。

尝试{ 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;

                }

            }
4

1 回答 1

0

这与 Angular 的 MSAL 库无关。问题是您的 Office 365 帐户的 SMTP 身份验证已禁用。为了验证您的 Office 365 帐户,第三方应用程序使用 SMTP 提交。您可以使用以下说明激活 SMTP 身份验证。可以在 Exchange Online 中启用或禁用经过身份验证的客户端 SMTP 提交 (SMTP AUTH)。

在此处了解更多信息:https ://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission

于 2021-08-09T11:30:52.937 回答