Как отправлять электронные письма с помощью кода VB.NET или C # из учетной записи Office 365, в которой включена многофакторная аутентификация?

У меня есть следующий код VB.NET для отправки электронных писем из моей учетной записи Office 365, он работал нормально, пока Microsoft не принудительно включила MFA в учетных записях Office 365:

Imports System.Net.Mail

Sub main()

        Dim message As MailMessage = New MailMessage()
        message.From = New MailAddress("[email protected]")
        message.To.Add(New MailAddress("[email protected]"))       
        message.Subject = "My subject"
        message.Body = "My body message"
        message.IsBodyHtml = True
        message.BodyEncoding = System.Text.Encoding.UTF8
        message.SubjectEncoding = System.Text.Encoding.UTF8
        Dim smtp As New SmtpClient("smtp.office365.com", 587)
        smtp.EnableSsl = True
        smtp.Credentials = New Net.NetworkCredential("[email protected]", "my password")
        smtp.Send(message)

End sub

Когда я запускаю приведенный выше код, я получаю следующую ошибку:

Необработанное исключение типа System.Net.Mail.SmtpException произошло в System.dll

Дополнительная информация: SMTP-серверу требуется безопасное соединение, или клиент не прошел аутентификацию. Ответ сервера был: 5.7.57 SMTP; Клиент не прошел аутентификацию для отправки анонимной почты во время MAIL FROM [DB6PR0501CA0038.eurprd05.prod.outlook.com]

Я уверен, что ошибка произошла после того, как я включил многофакторную аутентификацию в своей учетной записи, и я не могу отключить эту функцию, потому что Microsoft вынуждает пользователей Office 365 использовать эту функцию.

Есть ли способ решить эту проблему?


person Zanest Mahmood    schedule 26.11.2019    source источник


Ответы (1)


Вы можете вручную отключить статус MFA для своей учетной записи 365. Для этого вам необходимо настроить свою учетную запись 365 Powershell.

С помощью powershell отключите MFA пользователя MSOL в своем домене Office 365.

В вашем PowerShell используйте этот код для проверки всех пользователей Msol со статусом MFA:

Get-MsolUser -all | select DisplayName,UserPrincipalName,@{N="MFA Status"; E={ if( $.StrongAuthenticationMethods.IsDefault -eq true) {(.StrongAuthenticationMethods | Where IsDefault -eq $True).MethodType} else { "Disabled"}}} | FT -AutoSize

Затем, чтобы установить для статуса MFA значение Disabled, используйте этот код:

Set-MsolUser -UserPrincipalName YourUserPrincipalNameHere -StrongAuthenticationRequirements @()
person ravarador    schedule 01.03.2021