发送的python邮件有一个空白的TO字段

时间:2019-05-29 14:47:43

标签: python mime-mail

我有一个发送电子邮件的python脚本。电子邮件发送没有问题。

但是,当我收到邮件并打开它们时,其“收件人:”字段不会显示收件人。它只是空白。我想显示所有收件人。而且由于我在脚本中没有使用任何“密件抄送”配置,因此我对此感到困惑。

这是我正在使用的代码:

#!/usr/bin/env python

you = [ "MyEmail1@MyEmail.com", "MyEmail2@MyEmail.com" ]
for eachrecord in fformatErrMessage:
    # Preparing all variables #
    msg = MIMEMultipart()
    msg['Subject'] = subjectMsg
    part1 = MIMEText(text, 'plain')
    part2 = MIMEText(html, 'html')
    msg.attach(part1)
    msg.attach(part2)
    s = smtplib.SMTP('localhost')
    s.sendmail(me, you, msg.as_string())
    s.quit()

我尝试用以下方式替换您:

you = "MyEmail1@MyEmail.com"

认为列表可能是问题所在-但这没用。

1 个答案:

答案 0 :(得分:2)

在发送电子邮件时,服务器不会查看“收件人:”字段。相反,电子邮件服务器具有一种单独的传输收件人地址的方式,有时也称为“信封”,用于路由和传递邮件。客户端永远不会收到该信封,而是使用邮件头中的To:字段。

sendmail()调用仅设置SMTP信封的地址。如果希望“收件人:”字段显示在邮件本身中,则必须设置适当的标题:

msg['To'] = "foo@bar.com"

顺便说一下,这是密件抄送的工作方式:信封的地址根本不会在邮件头中重复。