Ç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.Messagemodü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_addrsbir 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'] = addrve 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 subprocessiçin unix sendmailpaketini çağırmayı bile düşünüyordum .
sendmailbir listeye ihtiyacı var.