我有一个发送电子邮件的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"
认为列表可能是问题所在-但这没用。
答案 0 :(得分:2)
在发送电子邮件时,服务器不会查看“收件人:”字段。相反,电子邮件服务器具有一种单独的传输收件人地址的方式,有时也称为“信封”,用于路由和传递邮件。客户端永远不会收到该信封,而是使用邮件头中的To:字段。
sendmail()调用仅设置SMTP信封的地址。如果希望“收件人:”字段显示在邮件本身中,则必须设置适当的标题:
msg['To'] = "foo@bar.com"
顺便说一下,这是密件抄送的工作方式:信封的地址根本不会在邮件头中重复。