【发布时间】:2022-10-06 15:04:16
【问题描述】:
我正在尝试将使用aiosmtpd 获得的电子邮件消息导出到*.eml 文件,稍后我可以使用任何*.eml 查看器或电子邮件客户端(如Thunderbird 或Mail)打开该文件。
async def handle_DATA(self, server, session, envelope) -> str:
msg: EmailMessage = message_from_bytes(envelope.content, policy=policy.SMTPUTF8)
with open(\"test.eml\", \'wb\') as outfile:
outfile.write(msg.as_bytes())
我还尝试使用Generator 和unixfrom=False 和unixfrom=False 以及相同的东西保存文件。
with open(\"test.eml\", \'w\') as file:
emlGenerator = generator.Generator(file)
emlGenerator.flatten(msg, unixfrom=False)
该文件已正确创建,但并非所有eml 文件都可以被Mail 或Thunderbird 正确读取。
从 gmail.com 收到的电子邮件是正确创建的,但从 protonmail.com 收到的电子邮件不是。可以打开从 Protonmail 电子邮件创建的 Eml 文件,但只能看到电子邮件的 from 和 to 参数。我看不到内容,也看不到里面的附件。
我猜它没有 eml 解析器期望看到的格式。
我尝试过不同的策略(如policy.SMTP、policy.default、...)。
用python创建eml文件的正确方法是什么?
注意:Protonmail 的 EML 文件的内容包含以下 This is an OpenPGP/MIME signed message (RFC 4880 and 3156)。这可能与缺乏对 Protonmail 电子邮件的正确解析有关吗?
-
您写道邮件或雷鸟无法正确读取 eml 文件。如果您将电子邮件直接发送到 Mail/Thunderbird,而不是通过 aiosmtpd/eml,会发生什么情况?在这种情况下可以正确读取它们吗?