Çok fazla arama yaptıktan sonra birden fazla alıcıya göndermek için smtplib.sendmail'in nasıl kullanılacağını bulamadım. Sorun postanın her gönderilmesinde posta başlıklarının birden fazla adres içerdiği görülüyordu, ancak aslında sadece ilk alıcı e-postayı alacaktı.
Sorun, email.Message
modülün smtplib.sendmail()
işlevden farklı bir şey beklemesi gibi görünüyor .
Kısacası, birden çok alıcıya göndermek için üstbilgiyi virgülle ayrılmış e-posta adresleri dizesi olarak ayarlamanız gerekir. Ancak sendmail()
parametre to_addrs
bir e-posta adresi listesi olmalıdır.
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
ve sonra işe yaradı. Birden çok atama aslında her biri için yeni bir 'Kime' başlığı ekler. Bu çok tuhaf bir arayüz, nasıl denemeyi düşündüğümü bile açıklayamıyorum. Bunu çözmeden önce akıl sağlığımı kurtarmak subprocess
için unix sendmail
paketini çağırmayı bile düşünüyordum .
sendmail
bir listeye ihtiyacı var.