Заголовок MIME в сообщении при отправке электронной почты с Python
Поэтому я пытаюсь отправить электронное письмо, используя этот шаблон и используя файл журнала в качестве тела, электронная почта отправляется нормально. Тем не менее, он имеет этот действительно уродливый заголовок в теле сообщения (как показано ниже)
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 ответ
Решение
С 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 в строку перед добавлением в качестве заголовка, поскольку квадратные скобки недопустимы в заголовках To/From. Надеюсь это поможет.