1

我正在尝试将变量to(具有电子邮件 ID)附加到并将msg["To"]电子邮件发送到此列表。没有错误或任何东西,但没有发送电子邮件。一旦我to从中删除变量msg["To"],电子邮件就会成功发送。我哪里错了?

def email (body,subject,to):
    msg = MIMEText("%s" % body)
    msg["Content-Type"] = "text/html"
    msg["From"] = "service@company.com"
    msg["To"] = to + "username@company.com"
    msg["Subject"] = '%s' % subject
    p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE)
    p.communicate(msg.as_string())
4

2 回答 2

3

问题是,如果您有一个电子邮件地址,附加第二个只会将它们一起运行。

to = "address1@example.com"
msg["To"] = to + "address2@example.com"
print msg["To"]
>>> address1@example.comaddress2@example.com

不用说,address1@example.comaddress2@example.com这不是一个有效的电子邮件地址,任何 MTA 都会对它大发雷霆。

根据 RFC 822 及其后续标准,MTA 期望地址之间使用逗号,因此:

msg["To"] = to + ", address2@example.com"

应该管用。

于 2013-01-04T01:06:19.293 回答
2

添加 to=to.strip() 修复它..

于 2013-01-04T00:57:38.443 回答