Spécifiez un expéditeur lors de l'envoi de courrier avec Python (smtplib)
J'ai une question très simple morceau de code (juste pour le test):
import smtplib
import time
server = 'smtp.myprovider.com'
recipients = ['[email protected]']
sender = '[email protected]'
message = 'Subject: [PGS]: Results\n\nBlaBlaBla'
session = smtplib.SMTP(server)
session.sendmail(sender,recipients,message);
Cela fonctionne, mais le problème est que les clients de messagerie n'affichent pas un expéditeur.
Je veux être en mesure d'ajouter un nom d'expéditeur à l'adresse e-mail. Des Suggestions?
source d'informationauteur TimothyP
Vous devez vous connecter pour publier un commentaire.
smtplib
n'a pas automatiquement droit à unFrom:
en-tête, de sorte que vous avez à vous-même:(En fait,
smtplib
ne comprend pas tout en-têtes automatiquement, mais envoie juste le texte que vous donnez un message brut)Voir cette réponse, c'est de travailler pour moi.
exemple de code:
Vous pouvez utiliser le e-mail.message.Message de classe, et l'utiliser pour générer des en-têtes mime, y compris
from:
to:
etsubject
. Envoyer laas_string()
résultat via SMTP.L ' "expéditeur" vous êtes en précisant dans ce cas est l'expéditeur de l'enveloppe qui est passé sur le serveur SMTP.
Ce que votre MUA (Mail User Agent - c'est à dire outlook/Thunderbird etc.) montre vous est le "from:" de l'en-tête.
Normalement, si je suis en utilisant smtplib, je voudrais compiler les en-têtes séparément:
Le format de l'en-tête est, par convention, normalement
"Name" <user@domain>
Vous devriez être, y compris un "Message-Id" en-tête et un "Reply-to" de l'en-tête ainsi que dans toutes les communications. Surtout depuis que les filtres anti-spam peuvent ramasser sur l'absence de ceux-ci comme une grande probabilité que le mail est un spam.
Si vous avez reçu votre mail du corps dans la variable du corps, juste compiler l'ensemble du message:
Remarque le double saut de ligne à la fin des en-têtes. Il est également intéressant de noter que les serveurs SMTP doit séparer les en-têtes avec des retours à la ligne (LF - linfeed). Cependant, j'ai vu un Windows serveur SMTP ou deux qui utilise \r\n (c'est à dire CRLF). Si vous êtes sur Windows, YMMV.
Quand il vient à l'aide de smtplib pour ajouter un nom instaead de l'affichage de votre adresse e-mail suffit d'utiliser:
Transmettre ce message à travers .sendmail(À, DE, message) fonctionne.