Comment faire pour envoyer un email à plusieurs destinataires à l'aide de python smtplib?

Après beaucoup de recherches je n'ai pas trouvé comment l'utiliser smtplib.sendmail pour envoyer à plusieurs destinataires. Le problème a chaque fois que le mail sera envoyé le mail en-têtes semblent contenir plusieurs adresses, mais en fait seul le premier bénéficiaire de recevoir l'e-mail.

Le problème semble être que la e-mail.Message module attend quelque chose de différent que la smtplib.sendmail() fonction.

En bref, pour envoyer à plusieurs destinataires, vous devez définir l'en-tête à une chaîne délimitée par des virgules adresses e-mail. Le sendmail() paramètre to_addrs cependant doit être une liste d'adresses e-mail.

from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
import smtplib

msg = MIMEMultipart()
msg["Subject"] = "Example"
msg["From"] = "[email protected]"
msg["To"] = "[email protected],[email protected],[email protected]"
msg["Cc"] = "[email protected],[email protected]"
body = MIMEText("example email body")
msg.attach(body)
smtp = smtplib.SMTP("mailhost.example.com", 25)
smtp.sendmail(msg["From"], msg["To"].split(",") + msg["Cc"].split(","), msg.as_string())
smtp.quit()
  • Il apparaît OP répondu à sa propre question: sendmail besoin d'une liste.
  • double possible de Est-il possible d'ajouter plusieurs destinataires en Python SMTPlib?
  • À l'aide de Python3 j'ai dû faire une boucle par les bénéficiaires; for addr in recipients: msg['To'] = addr et puis il a travaillé. Plusieurs affectations en fait ajoute une nouvelle 'À' en-tête de chacun. C'est très bizarre de l'interface, je ne peux même pas expliquer comment j'ai pensé à l'essayer. J'ai même vu à l'aide de subprocess pour appeler les unix sendmail paquet pour sauver ma santé avant que je compris cela.
InformationsquelleAutor user1148320 | 2012-01-13