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.
- Gibt es eine Möglichkeit, mit einem lizenzierten Benutzer über O365 zu senden? (Code oben)
- Sind in Exchange oder für den lizenzierten Benutzer spezielle Einstellungen erforderlich, damit dies funktioniert? (Wenn die Antwort auf 1 ja ist)
- 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?
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.
quelle