Czy mogę wysyłać wiadomości e-mail SMTP za pośrednictwem udostępnionej skrzynki pocztowej Office365?

13

Myślimy o przejściu na O365; opracowaliśmy jednak oprogramowanie, które wykorzystuje nasz obecny serwer Exchange do wysyłania wiadomości e-mail zarówno do użytkowników zewnętrznych, jak i do skrzynki wsparcia w przypadku wystąpienia błędów.

Testowałem to, aby upewnić się, że kod, który mamy na miejscu, będzie nadal działać z O365, ale jak dotąd nie odniosłem sukcesu.

Próbowałem używać SmtpClient .Net, a także SmtpClient MailKit i żaden z nich nie działa. Ciągle pojawia się błąd (jest to błąd MailKit - błąd .Net jest podobny)

„AuthenticationInvalidCredentials: 5.7.3 Niepowodzenie uwierzytelnienia [* .prod.exchangelabs.com]”

Mogę użyć poświadczeń, które mam w kodzie, aby zalogować się do OWA - więc wiem, że poświadczenia są prawidłowe. Czy nie można wysłać wiadomości e-mail przez O356? Czy jest możliwa jakaś specjalna konfiguracja w Exchange, aby było to możliwe?

Oto, co próbowałem do tej pory:

MailKit

var msg = new MimeMessage();
msg.From.Add(new MailboxAddress("Support","[email protected]"));
msg.To.Add(new MailboxAddress("Me","[email protected]"));
msg.To.Add(new MailboxAddress("External User","[email protected]"));
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("[email protected]", "supportPwd"));
    client.Send(msg);
    client.Disconnect(true);
}

Kod SmtpClient .Net wyglądał bardzo podobnie do kodu MailKit.

  1. Czy istnieje sposób wysyłania za pośrednictwem O365 z licencjonowanym użytkownikiem? (kod powyżej)
  2. Czy są wymagane jakieś specjalne ustawienia w Exchange lub dla licencjonowanego użytkownika, aby to zadziałało? (Jeśli odpowiedź na 1 brzmi „tak”)
  3. Czy możliwe jest wysyłanie wiadomości e-mail za pośrednictwem udostępnionej skrzynki pocztowej, do której użytkownik uwierzytelniony ma prawa Wyślij jako?

Aktualizacja

Nadal pojawia się ten sam komunikat o błędzie. Mamy włączone MFA dla użytkowników naszej domeny. Mamy jednak zasady, które nie wymagają MFA dla użytkowników, którzy logują się z zaufanej lokalizacji (adres IP naszej organizacji). Podałem również nasze IP jako Zaufane IP. Moim zdaniem MSZ nie powinno być tutaj problemem.

Wiem, że poświadczenia są poprawne. Skopiowałem je z kodu i wkleiłem na ekranie logowania podczas logowania do M365 - i wszystko było w porządku.

Co ja robię źle?

RHarris
źródło

Odpowiedzi:

7
  1. Tak, możesz.

  2. Ustawienia użytkownika: Zrzut ekranu z Centrum administracyjnego Zrzut ekranu aplikacji Zarządzaj aplikacjami e-mail

Ustawienia serwera: 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. Nie, nie możesz. Potrzebujesz licencjonowanego użytkownika do wysyłania poczty za pośrednictwem SMTP.

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

Nasz klient ma system biuletynów skonfigurowany w TYPO3 i musieliśmy stworzyć do tego nową skrzynkę pocztową. Wystarczy jednak lekki: zamiast Office 365 Business Premium przypisaliśmy tylko licencję Office 365 F1.

Edycja: również to znalazłem: Czy współdzielona skrzynka pocztowa Office365 może używać SMTP?

Wolfgang Jacques
źródło
To wydaje się odpowiadać na moje pytanie dotyczące wspólnej skrzynki pocztowej. Ale w początkowym kodzie pracuję z licencjonowanym użytkownikiem i to też nie działa - czy to powinno?
RHarris
@RHarris tak, powinno. Zobacz zredagowaną odpowiedź. Przepraszamy za niepełną pierwszą odpowiedź.
Wolfgang Jacques
0

Dla każdego, kto ma podobne problemy, odkryłem, że moim problemem była polityka dostępu warunkowego. Microsoft zapewnia Baseline Policy: Block Legacy Authentication- który został włączony w naszym AAD.

Patrząc na Politykę, blokuje ona wszelkie mechanizmy uwierzytelniania, które nie wymagają MFA. Dotyczy to między innymi POP i SMTP. Po wyłączeniu tej zasady powyższy kod działał dobrze.

RHarris
źródło