Python 引用的可打印行延续错误?

Python 引用的可打印行延续错误?,python,outlook,quoted-printable,Python,Outlook,Quoted Printable,我正在编写代码生成报告并通过电子邮件发送。在本例中,我尝试将报表作为html嵌入主体,但outlook无法正确呈现报表的部分内容。特别是,它似乎是引用的可打印编码的工件。我看不出我的编码文本有什么问题 我已将问题缩小到以下示例: Content-Type: multipart/mixed; boundary="===============0525238969==" MIME-Version: 1.0 Subject: Your Message(s) from 11/15/2018 04:48:

我正在编写代码生成报告并通过电子邮件发送。在本例中,我尝试将报表作为html嵌入主体,但outlook无法正确呈现报表的部分内容。特别是,它似乎是引用的可打印编码的工件。我看不出我的编码文本有什么问题

我已将问题缩小到以下示例:

Content-Type: multipart/mixed; boundary="===============0525238969=="
MIME-Version: 1.0
Subject: Your Message(s) from 11/15/2018 04:48:45 PM to 11/01/2019 04:48:45 PM
From: test@foo.com
To: test@foo.com,foo@test.com
Date: Fri, 01 Nov 2019 16:48:46 -0500
Content-Disposition: inline

--===============0525238969==
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

<br/>
Your report:<br/>
<br/>
<table border=3D1>
<tr><td colspan=3D"11">Found 1 record(s) between 11/15/2018 04:48:45 PM and=
 11/01/2019 04:48:45 PM<br/></td></tr>
</table><br/>
=09=09=09
--===============0525238969==--
应该是这样的:

Found 1 record(s) between 11/15/2018 04:48:45 PM and 11/01/2019 04:48:45 PM
                                                    ^
2) 结尾有一个“=0”,可能是制表符中的一个工件,编码为=09。自动剥离这些选项卡是有问题的,因为报告是从用户编辑的模板生成的。很难知道制表符在某些情况下是否相关

实际上,我可以通过在html内容的末尾强制添加一个额外的\n来修复第二个问题,但我在这里包含它,以防它与理解上面的问题1相关


顺便说一下,我在“eM客户端”中加载了该文件,但它没有遇到任何此类故障。我倾向于认为这可能是Outlook中的一个bug,但如果它是我的bug,那就简单多了。

问题是电子邮件内容使用LF作为换行符,而不是RFC要求的CRLF。Outlook显然试图处理LF内容,但有一些bug


如果从Python生成电子邮件时遇到此问题,请记住,在将其保存到.eml文件或通过SMTP传输消息之前,需要将其输出从LF转换为CRLF。即使在Linux上也是如此,因为规范要求CRLF。

如果我将上面的数据从记事本保存为EML文件,我可以在Windows资源管理器中双击它,Outlook会很好地显示消息。你确定没有在生成MIME数据后第二次对其进行编码吗?我注意到了与你相同的事情。经过进一步调查,我发现问题只在eol中使用LF而不是CRLF时出现。如果同时使用CRLF和LF,这样的问题肯定会发生。我没有同时使用两者。这不是故意的。我忘了python的电子邮件库生成LF,我需要转换为CRLF,因为RFC需要它。Outlook可以单独使用LF,只要您保持一致并且只使用LF。如果同时使用LF和CRLF,则假定只有CRLF必须用作分离器。这是不准确的。就我而言,文件中根本没有CRLF。
Found 1 record(s) between 11/15/2018 04:48:45 PM and 11/01/2019 04:48:45 PM
                                                    ^