Python smtplib 损坏 html 电子邮件
我的应用程序生成 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>
有人对发生的事情有任何想法吗?
My application generates html emails with tables used for reporting.
s = smtplib.SMTP(self.server)
s.sendmail(self.addrFrom(), self.addrTo(), message.getvalue())
When I check message.getvalue() before it gets sent, the html is valid. However, when I check the source when it gets sent to outlook it comes up as:
<TD>04/07/2011</TD><!
TD>30/04/2011</TD>
instead of:
<TD>04/07/2011</TD><TD>30/04/2011</TD>
anyone have any ideas on what's happening?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这不是 Outlook(或任何客户端)问题,而是符合 RFC 的服务器问题。
您必须纠正自己的例程或导入 textwrap。
有关更多详细信息,请参阅 RFC 5321:
RFC 2821 表示相同。
This is not an Outlook (or any client for that matter) issue, rather servers conforming to RFCs.
You'll have to right your own routine or import textwrap.
Refer to RFC 5321 for more detail:
RFC 2821 indicates the same.
您要发送什么内容类型标头?请记住,在 sendmail(from、to、mail) 的第三个参数中,标头必须位于消息正文之前,每个标头应以 \r\n 结尾,并且在最终标头之后应该有一个最终 \r\n,表示 \ r\n\r\n 将最后一个标头与消息正文分开。
或者实际上,您可能应该使用 \n 而不是 \r\n,因为那里存在所有不兼容的 MTA。
What are you sending for a content-type header? Remember the headers have to precede the message body in the 3rd arg to sendmail(from, to, mail), each header should end with \r\n, and there should be a final \r\n after the final header, meaning \r\n\r\n separating the last header from the message body.
Or actually, you should probably use \n rather than \r\n because of all the noncompliant MTAs out there.
您应该使用 email 包来生成正确的、MIME 编码的电子邮件正文。
您可能还想尝试一下我的 ezmail.py 模块,它为您完成了大部分工作。
You should be using the email package to generate a proper, MIME encoded email body.
you might also want to try out my ezmail.py module, that does most of that for you.