我一直在为小工具编写python代码,其中我试图使用python库imaplib和email来获取邮件。 代码语句如下所示。
import imaplib
import email
mail = imaplib.IMAP4_SSL('imap.server')
mail.login('userid@mail.com', 'password')
result, data = mail.uid('search', None, "ALL")
latest_email_uid = data[0].split()[-1]
result, data = mail.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = data[0][1]
email_message = email.message_from_string(raw_email)
maintype = email_message_instance.get_content_maintype()
我正在同时从不同的主机执行脚本。 我面临的问题是,在获取邮件正文时,对于相同的传入电子邮件,在第一台主机上,mac maintype被评估为" text"而对于其他主机,其评估为" multipart"在脚本执行期间。
想知道这些值是如何在运行时确定的,如果我总是希望maintype是" multipart",我应该在电子邮件正文中编写电子邮件时遵循什么标准布局。
答案 0 :(得分:0)
来自评论:
两个案例的raw_email都有具有多个值的原始html代码。所有大多数html代码都是相同的,除了很少的差异。对于maintype = multipart,Content-Type =" multipart / alternative",存在边界标记。对于maintype = text,Content-Type =" text / html",边界字段不存在
嗯,这回答了这个问题。 get_content_maintype
会返回Content-Type
的第一部分,<{>多部分 /替代multipart
,文字 / text
HTML
multiplart/alternative
表示电子邮件有多个替代版本。通常,这是html +文本。电子邮件通常以这种方式发送,因为它们可以被任何客户端(文本部分)读取,但仍然包含将在支持它的客户端中使用的HTML格式。
显然其中一封电子邮件是用html和文本发送的,而另一封电子邮件只包含html。