Après de nombreuses recherches, je n'ai pas pu trouver comment utiliser smtplib.sendmail pour envoyer à plusieurs destinataires. Le problème était qu'à chaque fois que le courrier était envoyé, les en-têtes du courrier semblaient contenir plusieurs adresses, mais en fait, seul le premier destinataire recevrait le courrier électronique.
Le problème semble être que le email.Messagemodule attend quelque chose de différent de la smtplib.sendmail()fonction.
En bref, pour envoyer à plusieurs destinataires, vous devez définir l'en-tête comme une chaîne d'adresses électroniques séparées par des virgules. Le sendmail()paramètre to_addrsdoit cependant ê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"] = "me@example.com"
msg["To"] = "malcom@example.com,reynolds@example.com,firefly@example.com"
msg["Cc"] = "serenity@example.com,inara@example.com"
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()
for addr in recipients: msg['To'] = addret puis ça a marché. Plusieurs affectations ajoutent en fait un nouvel en-tête «À» pour chacune. C'est une interface très bizarre, je ne peux même pas expliquer comment j'ai pensé l'essayer. J'envisageais même d'utiliser subprocessle sendmailpaquet Unix pour sauver ma raison avant de comprendre cela.
sendmailbesoin d'une liste.