Python smtplib破坏了HTML电子邮件

时间:2011-07-13 02:27:17

标签: python email outlook smtp

我的应用程序会生成包含用于报告的表格的HTML电子邮件。

s = smtplib.SMTP(self.server)    
s.sendmail(self.addrFrom(), self.addrTo(), message.getvalue())

当我在发送之前检查message.getvalue()时,html是有效的。但是,当我将源发送到Outlook时检查源时,它会显示为:

<TD>04/07/2011</TD><!
 TD>30/04/2011</TD>

而不是:

<TD>04/07/2011</TD><TD>30/04/2011</TD>

任何人对发生的事情都有任何想法?

3 个答案:

答案 0 :(得分:1)

您要为内容类型标头发送什么?记住标题必须在第3个arg中的邮件正文之前发送到sendmail(from,to,mail),每个标题应该以\ r \ n结尾,并且在最终标题之后应该有一个最后的\ r \ n,意思是r \ n \ r \ n将最后一个标题与邮件正文分开。

或者实际上,你应该使用\ n而不是\ r \ n,因为那里有所有不合规的MTA。

答案 1 :(得分:1)

您应该使用email包来生成正确的MIME编码电子邮件正文。

您可能还想尝试我的ezmail.py模块,该模块可以为您完成大部分工作。

答案 2 :(得分:1)

这不是Outlook(或任何客户端)问题,而是符合RFC的服务器。

您必须自己修改例程或导入textwrap。

有关更多详细信息,请参阅RFC 5321:

  

4.5.3.1.6。文字行

     

包含1000的文本行的最大总长度     八位字节(不包括为透明度复制的前导点)。     使用SMTP服务扩展可以增加此数量。

RFC 2821表示相同。

相关问题