Die Meldung "Client wurde nicht authentifiziert senden Sie anonyme E-mail beim E-MAIL VON" Fehler von Exchange-SMTP mit Rost lettre Bibliothek
Schreibe ich den Rost von der Anwendung, die sendet E-Mails über einen Exchange-server mit SMTP-Funktionalität aktiviert. Nach Microsoft ' s Webseite, die Einstellungen sind erforderlich:
- - Server-Adresse smtp.office365.com
- Port 587
- StartTLS Aktiviert
- Anmeldeinformationen für E-mail-Konto-login -
Diese werden untermauert durch die POP - /IMAP-Einstellungen des webmail-Dienst.
Hier ist mein code (mit Zensur):
extern crate lettre;
use self::lettre::email::EmailBuilder;
use self::lettre::transport::smtp::{SecurityLevel, SmtpTransportBuilder, SUBMISSION_PORT};
use self::lettre::transport::smtp::authentication::Mechanism;
use self::lettre::transport::EmailTransport;
pub fn send_mail() {
let email = EmailBuilder::new()
.from("my email")
.to("destination email")
.body("testing")
.subject("testing")
.build()
.unwrap();
//Connect to SMTP server
let mut transport = SmtpTransportBuilder::new(("smtp.office365.com", SUBMISSION_PORT))
.expect("Failed to create email transport")
.encrypt()
.smtp_utf8(true)
.credentials("my email", "my password")
.authentication_mechanism(Mechanism::Login)
.build();
println!("Mail transport built");
println!("{:?}", transport.send(email.clone()));
}
Wenn ich kompilieren und führen Sie den code,es gibt mir diese Fehlermeldung:
Err(Permanente(Antwort { code: Code { Schweregrad:
PermanentNegativeCompletion, Kategorie: Unspecified3, detail: 0 },
Nachricht: ["5.7.57 SMTP; Client wurde nicht authentifiziert zu versenden anonym
mail bei MAIL FROM [SYXPR01CA0106.ausprd01.prod.outlook.com]"] }))
Warum ist das passiert?
Den nächsten habe ich in meiner Forschung ein Problem auf GitHub in Bezug auf das lettre-Bibliothek nicht unterstützt, die Login
- Authentifizierung-Mechanismus (Office 365) verwendet werden; jedoch, die Codebasis wurde aktualisiert, um die Unterstützung Login
und ich bin mit dem master-Zweig direkt von GitHub, so dass theoretisch meinen Antrag unterstützen sollte, die Login
Mechanismus.
Edit: Vergaß zu erwähnen, dass ich versuchte, ein EHLO an den server, aber es kehrte eine (AUFTRAGGEBER:(Connection closed)) - Fehler.
Ja, meine E-Mail-Anmeldeinformationen sind in den code, ich werde versuchen mit einigen alternativen Anmeldeinformationen, um zu sehen, ob es funktioniert. Wenn das nicht funktioniert, werde ich versuchen, das Kennwort ändern der Methode, und dann nach, dass ich gehe zurück, um zu versuchen, verschiedene Einstellungen mit dem transport. Danke für den link.
Ich löste es! Ich benutzte telnet und openssl, um zu versuchen, eine Verbindung zu meinem SMTP-server, wo ich fand, dass AUTH-LOGIN erfordert 3 Befehlen; senden Sie den AUTH-LOGIN-code, der das senden von Benutzername und ein anderer das Kennwort zu senden. Stellt sich heraus, das lettre-Bibliothek implementiert alle seine AUTH-Befehle als Befehle, so dass diese nicht funktioniert mit dem server. Ich habe die Quellcodes für die Bibliothek zu, so verändert sich der senden-Funktion zu tun, die drei separate Befehle, meinen code neu kompiliert und alles hat gut funktioniert 🙂
InformationsquelleAutor foggy0400 | 2017-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich benutzte telnet und openssl, um zu versuchen, eine Verbindung zu meinem SMTP-server, wo ich fand, dass AUTH-LOGIN erfordert 3 Befehlen; senden Sie den AUTH-LOGIN-code, der das senden von Benutzername und ein anderer das Kennwort zu senden. Ich fand, dass die lettre-Bibliothek implementiert alle seine AUTH-Befehle als Befehle, so dass diese nicht funktioniert mit dem server. Ich habe die Quellcodes für die Bibliothek zu, so verändert sich der senden-Funktion zu tun, die drei separate Befehle, meinen code neu kompiliert und alles hat gut funktioniert 🙂
Zusätzlich zu meinen lettre-code:
Noch nicht, ich werde die Datei ein github issue, wenn für Sie und verlinke Sie hier
InformationsquelleAutor foggy0400