Могу ли я отправлять электронную почту SMTP через общий почтовый ящик Office365? - PullRequest
13 голосов
/ 14 января 2020

Мы думаем о переходе на 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 как доверенный. На мой взгляд, MFA не должен быть проблемой здесь.

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

Что я делаю не так?

Ответы [ 2 ]

7 голосов
/ 14 января 2020
  1. Да, вы можете.

  2. Настройки пользователя: Screenshot of Admin Center Screenshot of Manage email apps

Настройки сервера: 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
Нет, вы не можете. Вам нужен лицензированный пользователь для отправки почты через 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?

0 голосов
/ 25 февраля 2020

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

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

...