많은 검색을 한 후 smtplib.sendmail을 사용하여 여러 수신자에게 보내는 방법을 찾을 수 없었습니다. 문제는 메일을 보낼 때마다 메일 헤더에 여러 주소가 포함 된 것처럼 보이지만 실제로는 첫 번째 수신자 만 전자 메일을받습니다.
문제는 email.Message
모듈이 다른 것과 다른 것을 기대 하는 것 같습니다smtplib.sendmail()
기능 .
즉, 여러 수신자에게 보내려면 헤더를 쉼표로 구분 된 전자 메일 주소 문자열로 설정해야합니다. sendmail()
매개 변수는 to_addrs
그러나 이메일 주소의 목록이어야합니다.
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
그런 다음 효과가있었습니다. 여러 할당은 실제로 각각에 새로운 'To'헤더를 추가합니다. 이것은 매우 기이 한 인터페이스이며, 어떻게 시도했는지 설명조차 할 수 없습니다. 나는 이것을 이해하기 전에 subprocess
유닉스 sendmail
를 절약하기 위해 유닉스 패키지 를 호출하는 것을 고려 하고있었습니다.
sendmail
. 목록이 필요합니다.