Kann ich SMTP-E-Mails über das freigegebene Office365-Postfach senden?

13

Wir denken darüber nach, zu O365 zu wechseln. Wir haben jedoch eine Software entwickelt, die unseren aktuellen Exchange-Server verwendet, um E-Mails sowohl an externe Benutzer als auch an eine Support-Box zu senden, wenn Fehler auftreten.

Ich habe dies getestet, um sicherzustellen, dass der vorhandene Code weiterhin mit O365 funktioniert, aber bisher war ich nicht sehr erfolgreich.

Ich habe versucht, den SmtpClient von .NET sowie den SmtpClient von MailKit zu verwenden, und keiner scheint zu funktionieren. Ich erhalte immer wieder Fehler (dies ist der Fehler von MailKit - der .NET-Fehler ist ähnlich)

"AuthenticationInvalidCredentials: 5.7.3 Authentifizierung nicht erfolgreich [* .prod.exchangelabs.com]"

Ich kann die Anmeldeinformationen, die ich in meinem Code habe, verwenden, um mich bei OWA anzumelden. Ich weiß also, dass die Anmeldeinformationen gültig sind. Ist es nicht möglich, E-Mails über O356 zu senden? Gibt es eine spezielle Konfiguration, die in Exchange durchgeführt werden muss, um dies zu ermöglichen?

Folgendes habe ich bisher versucht:

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);
}

Der .Net SmtpClient-Code sah dem MailKit-Code sehr ähnlich.

  1. Gibt es eine Möglichkeit, mit einem lizenzierten Benutzer über O365 zu senden? (Code oben)
  2. Sind in Exchange oder für den lizenzierten Benutzer spezielle Einstellungen erforderlich, damit dies funktioniert? (Wenn die Antwort auf 1 ja ist)
  3. Ist es möglich, E-Mails über ein freigegebenes Postfach zu senden, für das der Benutzer mit Berechtigungsnachweis die Rechte zum Senden als hat?

Aktualisieren

Ich erhalte immer noch die gleiche Fehlermeldung. Wir haben MFA für unsere Domain-Benutzer aktiviert. Wir haben jedoch eine Richtlinie, die keine MFA für Benutzer erfordert, wenn sie sich von einem vertrauenswürdigen Ort (der IP unserer Organisation) aus anmelden. Ich habe unsere IP auch als vertrauenswürdige IP aufgeführt. In meinen Augen sollte MFA hier nicht das Problem sein.

Ich weiß, dass die Anmeldeinformationen korrekt sind. Ich habe sie aus dem Code kopiert und bei der Anmeldung bei M365 in den Anmeldebildschirm eingefügt - und bin ganz gut reingekommen.

Was mache ich falsch?

RHarris
quelle

Antworten:

7
  1. Ja, du kannst.

  2. Benutzereinstellungen: Screenshot des Admin Centers Screenshot von E-Mail-Apps verwalten

Servereinstellungen: 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. Nein, du kannst nicht. Sie benötigen einen lizenzierten Benutzer, um E-Mails über SMTP zu senden.

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

Ein Kunde von uns hat ein Newsletter-System mit TYPO3 eingerichtet und wir mussten dafür ein neues Postfach erstellen. Ein leichtes reicht jedoch aus: Anstelle eines Office 365 Business Premium haben wir nur eine Office 365 F1-Lizenz vergeben.

Bearbeiten: auch Folgendes gefunden: Kann das freigegebene Office365-Postfach SMTP verwenden?

Wolfgang Jacques
quelle
Das scheint meine Frage zu einer gemeinsam genutzten Mailbox zu beantworten. Aber in meinem ursprünglichen Code arbeite ich mit einem lizenzierten Benutzer und das funktioniert auch nicht - sollte es?
RHarris
@RHarris ja sollte es. Siehe bearbeitete Antwort. Entschuldigung für die unvollständige erste Antwort.
Wolfgang Jacques
0

Für alle, die ähnliche Probleme haben, stellte ich fest, dass mein Problem eine Richtlinie für bedingten Zugriff war. Microsoft bietet eine Baseline Policy: Block Legacy Authentication- die in unserem AAD aktiviert wurde.

Bei der Betrachtung der Richtlinie werden Authentifizierungsmechanismen blockiert, für die kein MFA erforderlich ist. Dies beinhaltet Dinge wie POP und SMTP. Nachdem ich diese Richtlinie deaktiviert hatte, funktionierte der oben aufgeführte Code einwandfrei.

RHarris
quelle