Dopo molte ricerche non sono riuscito a scoprire come utilizzare smtplib.sendmail per inviare a più destinatari. Il problema era ogni volta che la posta veniva inviata, le intestazioni della posta sembravano contenere più indirizzi, ma in realtà solo il primo destinatario riceveva la posta.
Il problema sembra essere che il email.Message
modulo si aspetta qualcosa di diverso dalla smtplib.sendmail()
funzione.
In breve, per inviare a più destinatari è necessario impostare l'intestazione su una stringa di indirizzi e-mail delimitati da virgole. Il sendmail()
parametro to_addrs
tuttavia dovrebbe essere un elenco di indirizzi 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'] = addr
e poi ha funzionato. Le assegnazioni multiple aggiungono effettivamente una nuova intestazione "A" per ognuna. Questa è un'interfaccia molto bizzarra, non riesco nemmeno a spiegare come ho pensato di provarlo. Stavo anche pensando di usare subprocess
per chiamare il sendmail
pacchetto unix per salvare la mia sanità mentale prima di capire questo.
sendmail
bisogno di un elenco.