Могу ли я отправлять электронную почту SMTP через общий почтовый ящик Office365?

13

Мы думаем о переходе на 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.

  1. Есть ли способ отправить через O365 с лицензированным пользователем? (код выше)
  2. Существуют ли какие-либо особые настройки, необходимые для работы в Exchange или лицензированном пользователе? (Если ответ на 1 - да)
  3. Можно ли отправлять электронную почту через общий почтовый ящик, для которого зарегистрированный пользователь имеет права «Отправить как»?

Обновить

Я все еще получаю то же сообщение об ошибке. Мы включили MFA для пользователей нашего домена. Однако у нас есть политика, которая не требует MFA для пользователей, когда они выполняют вход из надежного местоположения (IP-адрес нашей организации). Я также перечислил наш IP в качестве доверенного IP. На мой взгляд, МИД не должен быть проблемой здесь.

Я знаю, что полномочия верны. Я скопировал их из кода и вставил их на экран входа в систему при входе в M365 - и все получилось.

Что я делаю неправильно?

RHarris
источник

Ответы:

7
  1. Да, ты можешь.

  2. Пользовательские настройки: Снимок экрана администратора Снимок экрана: управление почтовыми приложениями

Настройки сервера: https://support.office.com/en-us/article/POP-IMAP-and-SMTP-settings-for-Outlook-com-d088b986-291d-42b8-9564-9c414e2aa040

SMTP server name smtp.office365.com

SMTP port 587

SMTP encryption method STARTTLS
  1. Нет, ты не можешь. Вам нужен лицензированный пользователь для отправки почты через SMTP.

https://answers.microsoft.com/en-us/msoffice/forum/msoffice_o365admin/set-up-smtp-relay-with-shared-mailbox/d7b98214-9564-432c-b098-525a98c529fb

У нашего клиента есть система рассылки новостей, настроенная с TYPO3, и для этого нам пришлось создать новый почтовый ящик. Однако будет достаточно небольшого: вместо Office 365 Business Premium мы назначаем только лицензию Office 365 F1.

Изменить: также нашел это: Может ли общий почтовый ящик Office365 использовать SMTP?

Вольфганг Жак
источник
Так что это, кажется, отвечает на мой вопрос относительно общего почтового ящика. Но в моем исходном коде я работаю с лицензированным пользователем, и это тоже не работает - не так ли?
RHarris
@RHarris да, это должно быть. Смотрите отредактированный ответ. Извините за неполный первый ответ.
Вольфганг Жак
0

Для тех, у кого есть подобные проблемы, я обнаружил, что моей проблемой была политика условного доступа. Microsoft предоставляетBaseline Policy: Block Legacy Authentication - который был включен в нашем AAD.

Рассматривая Политику, она предназначена для БЛОКИРОВАНИЯ любых механизмов аутентификации, которые не требуют MFA. Это включает в себя такие вещи, как POP и SMTP. Как только я отключил эту политику, приведенный выше код работал просто отлично.

RHarris
источник