5

我正在使用以下代码在 Outlook 中通过电子邮件发送文本文件“gerrit.txt”@ http://pastie.org/8289257的内容 ,但是当我查看源代码(@ http:// pastie.org/8289379)在Outlook中的电子邮件中,我在代码中看到了不必要的感叹号(!),这弄乱了输出,任何人都可以提供有关为什么会这样以及如何避免这种情况的输入吗?

from email.mime.text import MIMEText
from smtplib import SMTP

def email (body,subject):
    msg = MIMEText("%s" % body, 'html')
    msg['Content-Type'] = "text/html; charset=UTF8"
    msg['Subject'] = subject
    s = SMTP('localhost',25)
    s.sendmail('userid@company.com', ['userid2@company.com'],msg=msg.as_string())

def main ():
    # open gerrit.txt and read the content into body
    with open('gerrit.txt', 'r') as f:
        body = f.read()
    subject = "test email"
    email(body,subject)
    print "Done"

if __name__ == '__main__':
    main()
4

3 回答 3

8

这里有一些信息:http: //bugs.python.org/issue6327

请注意,邮件服务器对包含在电子邮件消息中的每一行有 990 个字符的限制。如果发送的电子邮件包含超过 990 个字符的行,这些行将被附加的行结束字符细分,这可能会导致电子邮件损坏,尤其是 HTML 内容。为防止发生这种情况,请在电子邮件中的适当位置添加您自己的行尾字符,以确保行的长度不超过 990 个字符。

我认为您必须将 html 拆分为几行。您可以使用textwrap.wrap方法。

于 2013-09-02T08:00:43.640 回答
0

在我的 html 字符串之间添加一个 '\n',在“!”之前随机添加 20 个字符 似乎解决了我的问题

于 2018-01-22T15:50:22.490 回答
0

我也遇到了同样的问题,因为 Outlook 不支持超过 990 个字符的行,所以它开始给出以下问题。

  1. 嵌套表
  2. 列标题的颜色变化
  3. 添加不需要的!分数 。

这是相同的解决方案。

如果您要添加单行,则可以添加

"line[:40]" + \r\n + "line[40:]".

如果你正在形成一张桌子,那么你可以把它放在循环中,比如

"<td>" + line[j][:40]+"\r\n"+line[j][40:] + "</td>"
于 2021-10-17T03:52:07.077 回答