将变量附加到msg [“To”]后未发送电子邮件

时间:2013-01-04 00:51:51

标签: python

我正在尝试将变量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())

2 个答案:

答案 0 :(得分: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"

应该有用。

答案 1 :(得分:2)

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