使用Python发送电子邮件时的MIME头部

1 投票
1 回答
3347 浏览
提问于 2025-04-16 14:07

我正在尝试使用这个模板发送电子邮件,并且用一个日志文件作为邮件的内容,邮件发送得很顺利。不过,邮件内容里出现了一个很丑的标题(如下所示)

From nobody Thu Mar 17 14:13:14 2011
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

有没有办法让邮件内容不包含上面的标题呢?谢谢!

#!/usr/bin/python
import smtplib
import time
import datetime
from email.mime.text import MIMEText
today = datetime.date.today()
textfile = "/home/user/Public/stereo-restart-log"
FROM = "my-username"
TO = ["recipients"]

SUBJECT = "Stereo log: %s" % today
fp = open(textfile, 'rb')
TEXT = MIMEText(fp.read())
fp.close()
message = """\
From: %s
To: %s
Subject: %s

%s
""" % (FROM, TO, SUBJECT, TEXT)

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login('my-username','mypass')
server.sendmail(FROM, TO, message)
server.close()

1 个回答

2

使用MIMEText,你已经创建了消息对象。接下来,你只需要给它添加合适的头信息:

FROM = "my-username"
TO = ["recipients"]
SUBJECT = "Stereo log: %s" % today
fp = open(textfile, 'rb')
TEXT = MIMEText(fp.read())
fp.close()
TEXT['From'] = FROM
TEXT['To'] = ",".join(TO)
TEXT['Subject'] = SUBJECT
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login('my-username','mypass')
server.sendmail(FROM, TO, TEXT.as_string)
server.close()

注意,在添加收件人(To)和发件人(From)头信息之前,你必须把收件人列表转换成字符串,因为方括号在这些头信息中是不允许的。希望这对你有帮助。

撰写回答