为什么我不能使用此脚本向多个收件人发送电子邮件?

时间:2012-01-24 22:51:10

标签: python email gmail gmail-imap

为什么我不能使用此脚本向多个收件人发送电子邮件?

我没有错误也没有反弹,第一个收件人 收到电子邮件。没有其他人这样做。

剧本:

#!/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()

5 个答案:

答案 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('; '))

如果您的收件人是一串以分号分隔的地址。