2011-07-13 91 views
2

我的應用程序生成帶有用於報告的表格的html電子郵件。Python smtplib破壞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> 

人都不會有什麼發生什麼想法?

+0

在python發送TCP/25之後,你應該用wireshark來嗅探它......在腳本的上游會發生一次不錯的機會腐敗......特別是如果涉及Outlook的話。使用wireshark的分析 - >遵循TCP流功能...您將獲得TCP會話的ASCII轉儲 –

回答

1

這不是Outlook(或任何客戶端)的問題,而是符合RFC的服務器。

你必須糾正自己的例程或導入textwrap。

參見RFC 5321的更多詳細信息:

4.5.3.1.6。文本行

包含該文本行的最大總長度爲1000 八位位組(不計算透明度重複的前導點)。 此號碼可能會因使用SMTP服務擴展而增加。

RFC 2821表示相同。

1

你發送了什麼內容類型的頭文件?請記住,標題必須在第三個參數的消息正文前面加上sendmail(from,to,mail),每個標題應該以\ r \ n結尾,最後一個標題後應該有最後一個\ r \ n, r \ n \ r \ n從郵件正文中分離出最後一個郵件頭。或者實際上,您應該使用\ n而不是\ r \ n,因爲所有不符合的MTA都在那裏。

1

你應該使用email包生成一個正確的,MIME編碼的郵件正文。

你可能也想試試我的ezmail.py模塊,這對你來說是最重要的。

相關問題