我有一个列表(errors
),我打印到屏幕上并发送电子邮件正文。但首先我将列表元素与换行符分开:
"\n".join(errors)
然后我将其打印到控制台并将其作为电子邮件发送。在控制台上,它显示为换行符分隔:
Error generating report
Another error
但是,在电子邮件中,他们无法显示......
Error generating report Another error
发生了什么事?
编辑:
为了使事情进一步复杂化,我只是注意到发送了 2 电子邮件,其中一封显示换行符,其中一封不显示!
sendEmail(SUPPORT_EMAIL_ADDRESS, "application terminated unexpectedly.", \
"The script will exit.\n\nError Message:\n%s" % \
"\n".join(errors))
sendEmail(USERS_EMAIL_ADDRESS, "report is delayed.",
"\n".join(errors),
"html", [], [], SUPPORT_EMAIL_ADDRESS)
第一个确实有它们而第二个没有。这是因为第二个中的html格式......?
答案 0 :(得分:12)
如果您的电子邮件是HTML格式的,则会影响换行符的显示。
答案 1 :(得分:11)
我会尝试两件事:
尝试使用CRLF("\r\n"
)而不仅仅是LF
确保您的电子邮件未以HTML模式发送,或者,如果是,请尝试将"\n"
替换为"<br>"
答案 2 :(得分:6)
您在阅读Outlook中的电子邮件吗? Outlook将从纯文本邮件中删除“额外换行符”(即,它认为某些神秘规则不必要的换行符)。为了解决这个问题,我在发送之前将日志等邮件转换为HTML。这很简单;只需将其包装在&lt; PRE&gt; ...&lt; / PRE&gt;标签(当然有适当的HTML标题)。
答案 3 :(得分:0)
对于这类问题,我发现在eMail中查看本机代码有很大帮助。我使用Eudora,因为它以原生文本格式存储所有电子邮件。 我可以通过在记事本或其他文本编辑器中打开电子邮箱来查看电子邮件客户端浏览的格式。如果您在UNIX环境中,最好在vi或其他基本文本编辑器中查看它 所有电子邮件都是纯文本,并且会转换为您所看到的电子邮件客户端。
答案 4 :(得分:0)
您是否尝试过将\n
替换为标签?
使用win32com发送Outlook电子邮件解决了mail.HTMLBODY的问题。
希望这会有所帮助。