Sau khi tìm kiếm nhiều, tôi không thể tìm ra cách sử dụng smtplib.sendmail để gửi cho nhiều người nhận. Vấn đề là mỗi khi thư được gửi, các tiêu đề thư sẽ xuất hiện để chứa nhiều địa chỉ, nhưng thực tế chỉ có người nhận đầu tiên mới nhận được email.
Vấn đề dường như là email.Message
mô-đun mong đợi một cái gì đó khác với smtplib.sendmail()
chức năng.
Nói tóm lại, để gửi cho nhiều người nhận, bạn nên đặt tiêu đề thành một chuỗi các địa chỉ email được phân tách bằng dấu phẩy. Các sendmail()
tham số to_addrs
tuy nhiên phải là một danh sách các địa chỉ 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
và sau đó nó hoạt động. Nhiều bài tập thực sự nối thêm tiêu đề 'Tới' mới cho mỗi bài. Đây là một giao diện rất kỳ quái, tôi thậm chí không thể giải thích cách tôi nghĩ để thử nó. Tôi thậm chí đã cân nhắc sử dụng subprocess
để gọi sendmail
gói unix để tiết kiệm sự tỉnh táo của mình trước khi tôi phát hiện ra điều này.
sendmail
cần một danh sách.