Python smtplib sendmail() 不与主题/正文一起使用



每当我尝试使用sendmail(sender,reciever,message)时,它都会成功发送电子邮件,并且主题行很好,但电子邮件的"正文"总是丢失。

这是我的完整代码:

s = smtplib.SMTP("smtp.gmail.com",587)
s.ehlo()
s.starttls()
s.login(sender,password)
message = """From %s
Subject: %s
This is the body part""" % (sender,subject)
s.sendmail(sender,reciever,message)
s.quit()

为什么尸体没有被接收?

您在主题和正文之间缺少一个额外的空行,如官方文档的示例(释义)中所述:

msg = "From: %srnTo: %srnrnBody text"

无论如何,我都会遵循文档中的建议,改用电子邮件包中的 Message 对象。这样你就不必担心正确格式化字符串,只需执行以下操作:

msg = EmailMessage()
msg['Subject'] = "Subject"
msg['From'] = Address("Name", "mailbox", "domain")
msg['To'] = (Address("Name Too", "test", "example.com"),
             Address("And so on", "so", "forth"))
msg.set_content("The body of the e-mail")
with smtplib.SMTP("smtp.gmail.com", 587) as s:
    s.send_message(msg)

有关详细信息,请参阅官方文档的示例。

最新更新