Python SMTP 头部格式
下面这段代码正在正确地格式化我的邮件脚本。它把收件人、发件人、主题和正文放在邮件的正确位置。我的问题是,我搞不懂为什么在我的连接函数里,邮件正文需要两个回车和两个换行符("\r\n\r\n"),而其他的头部信息只需要一个回车。
def message(self):
subject = input("What is the subject line of your message")
headers = ["from: " + self.sendfrom,
"to: " + self.sendto,
"subject: " + subject,
"content_type: text/html"]
headers = "\r\n".join(headers)
msg = input("type your message")
return headers, msg
def connect(self, headers, msg):
self.server.starttls()
self.server.login(self.usrname,self.pswd)
self.server.sendmail(self.sendfrom, self.sendto, headers + "\r\n\r\n" + msg)
print("I sent the email")
return self.server
谢谢!
1 个回答
3
因为有一个标准,所以邮件的正文必须和头部用一个空行分开。
一封邮件由头部字段和可选的正文组成。正文就是一系列包含ASCII字符的行。它和头部之间用一个空行分开(也就是一行没有任何内容,后面跟着换行符)。
电子邮件软件遵循这些标准,并且会期待正文前面有一个空行。如果没有空行,软件就会认为这些文本是头部的一部分,而通常这些邮件软件默认会隐藏大部分头部信息。