SMTP-5.7.57 Fehler beim senden von E-Mails über Office 365
Ich versuche zum einrichten der code zum senden von E-Mails über Office 365 authentifizierte SMTP-Dienst:
var _mailServer = new SmtpClient();
_mailServer.UseDefaultCredentials = false;
_mailServer.Credentials = new NetworkCredential("[email protected]", "password");
_mailServer.Host = "smtp.office365.com";
_mailServer.TargetName = "STARTTLS/smtp.office365.com"; //same behaviour if this lien is removed
_mailServer.Port = 587;
_mailServer.EnableSsl = true;
var eml = new MailMessage();
eml.Sender = new MailAddress("[email protected]");
eml.From = eml.Sender;
eml.to = new MailAddress("[email protected]");
eml.Subject = "Test message";
eml.Body = "Test message body";
_mailServer.Send(eml);
Diese scheint nicht zu arbeiten, und ich bin zu sehen eine Ausnahme:
SMTP-server erfordert eine sichere Verbindung oder der client wurde nicht authentifiziert. Die Serverantwort war: 5.7.57 SMTP; Client wurde nicht authentifiziert senden Sie anonyme E-mail beim E-MAIL-AUS
System.Net.E-Mail.MailCommand.Senden(SmtpConnection conn, Byte [] - Befehl, String aus)
System.Net.E-Mail.SmtpTransport.SendMail(MailAddress Absender, MailAddressCollection Empfänger, String deliveryNotify, SmtpFailedRecipientException& Ausnahme)
System.Net.E-Mail.SmtpClient.Send(MailMessage message)
Habe ich versucht, Netzwerk-Ablaufverfolgung aktivieren und es wird angezeigt, dass eine sichere Kommunikation hergestellt sind (zum Beispiel, sehe ich eine Zeile im Protokoll für das "STARTTLS" - Kommando, und später gibt es eine Zeile in der log "Remote-Zertifikat als gültig bestätigt durch den Nutzer.", und die folgenden Send()
und Receive()
Daten nicht im Klartext, plain text, und nicht angezeigt werden, enthalten keine TLS/SSH Panik)
Kann ich auch mit dem gleichen E-Mail-Adresse und Ihr Kennwort zur Anmeldung auf http://portal.office.com/ und verwenden Sie das Outlook E-Mail-web-mail zu versenden und Lesen von E-Mails, die so was verursachen könnte, dass die Authentifizierung fehlschlägt, wenn Sie E-Mails programmgesteuert?
Gibt es eine Möglichkeit, um zusätzlich die debug-verschlüsselten stream?
- ist die angegebene Adresse in
eml.From = eml.Sender;
die gleiche wie die E-Mail-Adresse des Kontos ein, die Sie herstellen? Wenn Sie die E-Mail-Adresse angegeben, in derFrom
Feld zu sein, dass der account, nicht die E-Mail erfolgreich versenden? Wenn dem so ist, ist es wahrscheinlich, dass der SMTP konfiguriert ist, um scheitern zu senden, E-Mails, die Aussehen, wie Sie kommen von einem anderen Konto. - Es immer noch nicht, wenn nur die
From
eingestellt ist, und keineSender
angegeben ist. In allen Fällen, dieFrom
entspricht derNetworkCredentials
- Ich bin aus Ideen, die in diesem Fall, da sonst dein code sieht gut aus. Wenn Sie eine Lösung finden, kannst du es hier posten? Bin daran interessiert, herauszufinden, was die Ursache ist.
Client was not authenticated to send anonymous mail during MAIL FROM
sagt, dass Sie versuchen, senden Sie anonyme E-mail, was bedeutet, dass Sie nicht erkennen, IhreFrom
- Adresse.- warum sollte es nicht erkennen, den Absender, wenn ich kann, loggen Sie sich in Office 365 mit ihm?
- Wo bekommen Sie das
From
- Adresse aus? User-Eingabe? Eine XML-Datei? Hart-codiert? Ist es möglich, dass dieFrom
- Adresse ist falsch geschrieben oder enthält zusätzliche Zeichen (, die vielleicht nicht sichtbar sind)? - Hat Ihr Kennwort mit nicht-ASCII-Zeichen? Sieht aus wie office365.com speichert das Passwort kodiert in ISO-8859-1, aber ich denke SmtpClient sendet Kennwörter als UTF-8, so dass dazu führen würde, dass die Dinge nicht authentifizieren... was ich erwarten würde, dass würde bedeuten, es würde nicht einmal auf die MAIL FROM-Befehl, aber vielleicht ist es versucht zu senden, eh?
- Für den moment, ich versuche es mit einem hard-codierten E-Mail und Passwort, weder verwenden, keine nicht-ASCII-Zeichen, copy/paste-und log-in richtig portal.office.com (nach meiner Frage)
- Deaktivieren Sie STARTTLS. Office365.com's SMTP-server kann aufgebrochen werden, dass das senden EHLO nach der STARTLS kann verwirren den server (es ist vorher passiert ist).
- Pro Frage, das Verhalten ist das gleiche, ohne die
Target
set zu initiieren, TLS, die wiederum erforderlich ist, um das senden via SMTP über Office 365 - Nein, ich meine nicht
UseSsl = true
. Port 587 nicht, dass SSL erforderlich ist, es ist nur eine zusätzliche Schicht von Schutz für den Kunden. - Dies kann hilfreich sein: stackoverflow.com/questions/29648391/...
- Eine weitere Idee könnte sein, dass Sie brauchen, um eine domain-Planer in Ihrem NetworkCredentials, obwohl, das würde davon abhängen, die SASL-AUTH-Mechanismus so etwas wie NTLM und nicht PLAIN oder LOGIN.
- Noch nicht in der Lage zum senden von authentifizierten E-mail über Office 365 - für den moment sind wir mit einem sekundären (non-O365) - SMTP-server.
- Wir waren eigentlich nur in der Lage, diese zu lösen. Wir hatten unsere mailbox als "shared" - Konto, das würde nicht funktionieren. Wenn mein Netzwerk-admin verändert den account-Typ "reguläre" dann fing es richtig funktioniert.
- Ich habe noch nicht in der Lage war diese zu lösen, und für die Zeit, die wir genommen haben, den Ansatz zu verwenden, eine nicht authentifizierte Verbindung für unsere internen Abläufe
- hast du keine Lösung?
- Im Octuber 11 Sie haben angegeben, war dieses noch ein problem für Sie. Hat es gelöst noch (Mai 09th, 2018)? Ich stehe vor dem gleichen problem
- Eine Sache, die wir Taten, war fügen Sie den server, der sendet die Anfrage an den SMTP-Liste der zugelassenen Elemente in der SMTP.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In meinem Fall, nachdem ich versucht, all diesen Vorschlag ohne Glück, kontaktierte ich den Microsoft support, und Ihr Vorschlag war, einfach das Passwort ändern.
Diese Feste mein Problem.
Beachten Sie, dass das Passwort nicht abgelaufen ist, weil ich angemeldet office365 mit Erfolg, jedoch ist der reset das Problem gelöst.
Lektion gelernt: Vertrauen Sie nicht auf die Office 365-Kennwort Ablaufdatum, in meinem Fall das Passwort wäre abgelaufen ist, nach 1-2 Monaten, aber es funktionierte nicht.
Dazu führte mich zu untersuchen, in meinem code, und erst nach viel Zeit, die ich erkannte, dass das problem war in der Office365-Kennwort, das Sie "beschädigt" oder "vorzeitig abgelaufen".
Vergessen Sie nicht, alle 3 Monate zu "aktualisieren" das Passwort ein.
Zur Unterstützung bei debugging, versuchen Sie es vorübergehend Umschalten auf MailKit und durch ein code-snippet wie folgt:
Diese melden sich die gesamte Transaktion auf eine Datei namens "smtp.log", das können Sie dann Lesen und sehen, wo Dinge schief gelaufen sind.
Beachten Sie, dass smtp.log wird wahrscheinlich enthalten eine
AUTH LOGIN
Befehl, gefolgt von ein paar Befehle, die base64-codiert sind (dies sind Ihr Benutzername/Passwort), so dass, wenn Sie teilen sich die melden, sicher sein, zu Peeling diese Zeilen.Ich würde erwarten, dass dieses die gleichen Fehler wie Sie zu sehen sind, mit dem System.Net.E-Mail, aber es wird Ihnen helfen zu sehen, was Los ist.
Vorausgesetzt, es scheitert (und ich erwarte, dass es wird), versuchen Sie
SecureSocketOptions.None
und/oder versuchen auskommentieren derAuthenticate()
.Sehen, wie diese änderungen die Fehlermeldung, die Sie sehen.
Sicher sein, Sie verwenden die tatsächlichen office365-E-Mail-Adresse für das Konto ein. Sie können es finden, indem Sie auf die Schaltfläche "Profil" in Outlook365. Ich haderte mit Authentifizierung, bis ich bemerkte, dass die E-Mail-Adresse, die ich versuchte zu verwenden für die Authentifizierung war nicht die tatsächliche Postfach-E-Mail-Konto. Die eigentliche E-Mail Konto können die form von: [email protected].
Wir haben uns die Arbeit durch die Umstellung der Postfächer (von-Adresse), von "shared" auf "regular". Vor dieser änderung, ich meine Anwendung beenden, senden von E-Mail, wenn wir nach der Migration von Gmail zu Office 365. Keine anderen änderungen am code waren nötig, neben der Einstellung des host zu
smtp.office365.com
.Überprüfen Sie bitte folgenden code habe ich getestet, um zu senden Sie E-Mail mit Exchange Online:
Port (587) definiert wurde, für die Nachrichtenübermittlung. Obwohl der port 587 nicht vorschreiben STARTTLS erfordern, die Verwendung von port 587 populär wurde etwa zur gleichen Zeit wie die Erkenntnis, dass die SSL/TLS-Verschlüsselung der Kommunikation zwischen clients und Servern wurde ein wichtiger Sicherheits-und Datenschutz-Problem.
In meinem Fall war mein problem nicht im Zusammenhang mit dem code aber etwas zu tun mit dem Exchange-Postfach. Nicht sicher, warum, aber das löste mein problem:
Diese gibt Berechtigungen, um die Benutzer zum senden von E-Mails im Namen von sich selbst. In der Theorie NT-AUTORITÄT\SELBST tun sollten, die gleiche Sache, aber für einige Grund, warum das nicht funktioniert hat.
Quelle: http://edudotnet.blogspot.com.mt/2014/02/smtp-microsoft-office-365-net-smtp.html
Müssen Sie die Anmeldeinformationen ändern-Funktion. Hier ist die substitution, die Sie machen müssen:
ändern
für diese