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.Message
modul 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_addrs
namun 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'] = addr
dan 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 subprocess
untuk menggunakan memanggil sendmail
paket unix untuk menyelamatkan kewarasan saya sebelum saya menemukan ini.
sendmail
perlu daftar.