Setelah banyak pencarian, saya tidak dapat menemukan cara menggunakan smtplib.sendmail untuk mengirim ke banyak penerima. Masalahnya adalah setiap kali surat dikirimkan, tajuk surat tampaknya berisi banyak alamat, tetapi kenyataannya hanya penerima pertama yang akan menerima email.
Masalahnya tampaknya bahwa email.Messagemodul mengharapkan sesuatu yang berbeda dari smtplib.sendmail()fungsinya.
Singkatnya, untuk mengirim ke banyak penerima, Anda harus mengatur tajuk menjadi serangkaian alamat email yang dibatasi koma. The sendmail()parameter to_addrsnamun harus daftar alamat email.
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'] = addrdan kemudian berhasil. Banyak tugas sebenarnya menambahkan header 'To' baru untuk masing-masing. Ini adalah antarmuka yang sangat aneh, saya bahkan tidak bisa menjelaskan bagaimana saya berpikir untuk mencobanya. Saya bahkan mempertimbangkan subprocessuntuk menggunakan memanggil sendmailpaket unix untuk menyelamatkan kewarasan saya sebelum saya menemukan ini.
sendmailperlu daftar.