Python smtplib sendmail() 不适用于主题/正文

Lac*_*her 3 python email

每当我尝试使用 时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()
Run Code Online (Sandbox Code Playgroud)

为什么尸体没有被接收?

mec*_*ech 5

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

msg = "From: %s\r\nTo: %s\r\n\r\nBody text"
Run Code Online (Sandbox Code Playgroud)

无论如何,我会遵循文档中的建议并使用电子邮件包中的 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)
Run Code Online (Sandbox Code Playgroud)

更多内容请参见官方文档的示例。