Мы думаем о переходе на O365; однако мы разработали программное обеспечение, которое использует наш текущий сервер Exchange для отправки электронной почты как внешним пользователям, так и в службу поддержки при возникновении ошибок.
Я проверял это, чтобы убедиться, что имеющийся у нас код будет продолжать работать с O365, но пока я не очень успешен.
Я пытался использовать SmtpClient .Net, а также SmtpClient MailKit, и ни один из них, похоже, не работает. Я получаю сообщение об ошибке (это ошибка MailKit - ошибка .Net похожа)
«AuthenticationInvalidCredentials: 5.7.3 Аутентификация не удалась [* .prod.exchangelabs.com]»
Я могу использовать учетные данные, которые есть в моем коде, для входа в OWA - поэтому я знаю, что учетные данные действительны. Разве нельзя отправить электронное письмо через O356? Есть ли какая-либо специальная конфигурация, которая должна произойти в Exchange, чтобы сделать это возможным?
Вот что я пробовал до сих пор:
MailKit
var msg = new MimeMessage();
msg.From.Add(new MailboxAddress("Support","support@mydomain.com"));
msg.To.Add(new MailboxAddress("Me","me@mydomain.com"));
msg.To.Add(new MailboxAddress("External User","euser@externaldomain.com"));
msg.Subject = "Test";
msg.Body = new TextPart("plain"){
Text = "Here is a message for you"
};
using(var client = new SmtpClient()){
client.ServerCertificateValidationCallback = (s,c,h,e) => true;
client.AuthenticationMechanisms.Remove("XOAUTH2"); //Not sure what this does. Have tried with and without
client.Connect("smtp.office365.com", 587, MailKit.Security.SecureSocketOptions.StartTls);
client.Authenticate(new NetworkCredential("support@mydomain.com", "supportPwd"));
client.Send(msg);
client.Disconnect(true);
}
Код .Net SmtpClient очень похож на код MailKit.
- Есть ли способ отправить через O365 с лицензированным пользователем? (код выше)
- Существуют ли какие-либо особые настройки, необходимые для работы в Exchange или лицензированном пользователе? (Если ответ на 1 - да)
- Можно ли отправлять электронную почту через общий почтовый ящик, для которого зарегистрированный пользователь имеет права «Отправить как»?
Обновить
Я все еще получаю то же сообщение об ошибке. Мы включили MFA для пользователей нашего домена. Однако у нас есть политика, которая не требует MFA для пользователей, когда они выполняют вход из надежного местоположения (IP-адрес нашей организации). Я также перечислил наш IP в качестве доверенного IP. На мой взгляд, МИД не должен быть проблемой здесь.
Я знаю, что полномочия верны. Я скопировал их из кода и вставил их на экран входа в систему при входе в M365 - и все получилось.
Что я делаю неправильно?
Для тех, у кого есть подобные проблемы, я обнаружил, что моей проблемой была политика условного доступа. Microsoft предоставляет
Baseline Policy: Block Legacy Authentication
- который был включен в нашем AAD.Рассматривая Политику, она предназначена для БЛОКИРОВАНИЯ любых механизмов аутентификации, которые не требуют MFA. Это включает в себя такие вещи, как POP и SMTP. Как только я отключил эту политику, приведенный выше код работал просто отлично.
источник