Python smtplib 损坏 html 电子邮件

发布于 2024-11-24 03:11:12 字数 461 浏览 1 评论 0原文

我的应用程序生成 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

み青杉依旧 2024-12-01 03:11:12

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

您必须纠正自己的例程或导入 textwrap。

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

4.5.3.1.6。文本行

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

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:

4.5.3.1.6. Text Line

The maximum total length of a text line including the is 1000
octets (not counting the leading dot duplicated for transparency).
This number may be increased by the use of SMTP Service Extensions.

RFC 2821 indicates the same.

只涨不跌 2024-12-01 03:11:12

您要发送什么内容类型标头?请记住,在 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.

尾戒 2024-12-01 03:11:12

您应该使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文