为什么我不能使用此脚本向多个收件人发送电子邮件?
我没有错误也没有反弹,第一个收件人 收到电子邮件。没有其他人这样做。
剧本:
#!/usr/bin/python
import smtplib
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
recipient = 'email@domain.com; email2@domain.com;'
sender = 'me@gmail.com'
subject = 'the subject'
body = 'the body'
password = "password"
username = "me@gmail.com"
body = "" + body + ""
headers = ["From: " + sender,
"Subject: " + subject,
"To: " + recipient,
"MIME-Version: 1.0",
"Content-Type: text/html"]
headers = "\r\n".join(headers)
session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
session.ehlo()
session.starttls()
session.ehlo
session.login(username, password)
session.sendmail(sender, recipient, headers + "\r\n\r\n" + body)
session.quit()
答案 0 :(得分:7)
分号不是收件人标头中地址的正确分隔符。你必须使用逗号。
编辑:我现在看到你错误地使用了库。您提供的字符串将始终被解释为单个地址。您必须提供要发送给多个收件人的地址列表。答案 1 :(得分:1)
标准标头中的收件人必须用逗号分隔,而不是用分号分隔。我指责微软Outlook引导人们不相信。
答案 2 :(得分:0)
您可以,只需将电子邮件放入数组中,然后在每个电子邮件中循环播放数组,如下所示: (我的python生锈了...原谅我的语法)
foreach recipient in recipients
headers = ["From: " + sender, "Subject: " + subject, "To: " + recipient, "MIME-Version: 1.0", "Content-Type: text/html"]
headers = "\r\n".join(headers)
session.sendmail(sender, recipient, headers + "\r\n\r\n" + body)
答案 3 :(得分:0)
在您的代码中更改此内容:
recipient = ['email@domain.com','email2@domain.com']
headers = ",".join(headers)
session.sendmail(sender, recipient.split(","), headers + "\r\n\r\n" + body)
答案 4 :(得分:0)
可选地
recipient = ', '.join(recipient.split('; '))
如果您的收件人是一串以分号分隔的地址。