Geben Sie einen Absender beim Senden von E-Mails mit Python (smtplib) an

8

Ich habe ein sehr einfaches Stück Code (nur zum Testen):

%Vor%

Das funktioniert, aber das Problem besteht darin, dass E-Mail-Clients keinen Absender anzeigen. Ich möchte der E-Mail einen Absendernamen hinzufügen können. Vorschläge?

    
TimothyP 12.02.2009, 11:52
quelle

5 Antworten

7

smtplib enthält nicht automatisch eine From: Kopfzeile, also müssen Sie eine in sich selbst einfügen:

%Vor%

(Tatsächlich enthält smtplib keine Header automatisch, sondern sendet nur den Text, den Sie ihm als rohe Nachricht geben)

    
dF. 12.02.2009, 12:08
quelle
14

Siehe diese Antwort, es funktioniert für mich.

Beispielcode:

%Vor%     
Wei Lu 03.11.2014 15:58
quelle
11

Sie können die email.message.Message -Klasse verwenden und verwenden es um Mime-Header zu generieren, einschließlich from: , to: und subject . Senden Sie das as_string() -Ergebnis über SMTP.

%Vor%     
gimel 12.02.2009 12:16
quelle
11

Der "Absender", den Sie in diesem Fall angeben, ist der Absender des Umschlags, der an den SMTP-Server übergeben wird.

Was Ihr MUA (Mail User Agent - also Outlook / Thunderbird etc.) Ihnen anzeigt, ist der Header "From:".

Normalerweise, wenn ich smtplib verwende, würde ich die Header separat kompilieren:

%Vor%

Das Format des From-Headers ist normalerweise nach Konvention "Name" <user@domain>

Sie sollten auch einen "Message-Id" Header und einen "Reply-To" Header in allen Kommunikationen enthalten. Vor allem, da Spam-Filter den Mangel daran als eine große Wahrscheinlichkeit auffassen können, dass die Post Spam ist.

Wenn Sie Ihren Mail-Text im Variablenhauptteil haben, kompilieren Sie einfach die gesamte Nachricht mit:

%Vor%

Beachten Sie den doppelten Zeilenumbruch am Ende der Header. Es ist auch erwähnenswert, dass SMTP-Server Header nur mit Newlines (d. H. LF - linfeed) trennen sollten. Ich habe jedoch einen Windows SMTP-Server oder zwei gesehen, die \ r \ n (d. H. CRLF) verwenden. Wenn Sie Windows verwenden, YMMV.

    
Philip Reynolds 12.02.2009 12:22
quelle
0

Wenn Sie nur smtplib verwenden, um einen from name instaead zum Anzeigen Ihrer E-Mail-Adresse hinzuzufügen, verwenden Sie einfach:

%Vor%

Die Weiterleitung dieser Nachricht durch .sendmail (NACH, VON, Nachricht) funktioniert.

    
0_o 29.12.2017 23:20
quelle

Tags und Links