换行符显示在屏幕上,但不显示在电子邮件中

问题描述 投票:8回答:5

我有一个列表(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格式...吗?
python email newline
5个回答
12
投票
如果您的电子邮件是HTML格式的,那将影响换行符的显示。

11
投票
我会尝试的两件事:

  • 尝试使用CRLF("\r\n"),而不只是LF
  • 确保您的电子邮件未以HTML模式发送,或者,如果是,请尝试将"\n"替换为"<br>"

6
投票
您是否正在Outlook中阅读电子邮件? Outlook将从纯文本邮件中删除“多余的换行符”(即某些奥秘规则认为不必要的换行符)。为了解决这个问题,我在发送之前将诸如日志之类的邮件转换为HTML。这很简单;只需将其包装在
 ...  PRE>标记中(当然带有适当的HTML标头)。

0
投票
对于这种类型的问题,我发现查看电子邮件中的本机代码有很大帮助。我之所以使用Eudora,是因为它以本机文本格式存储了所有电子邮件。通过在记事本或其他一些文本编辑器中打开电子邮件邮箱,我可以查看格式而无需被电子邮件客户端浏览。如果您在UNIX环境中,最好在vi或其他基本文本编辑器中进行查看。所有电子邮件均为纯文本,并将其转换为电子邮件客户端所看到的内容。

0
投票
您是否尝试过用标签替换\ n?解决了我使用win32com发送Outlook电子邮件的mail.HTMLBODY问题。希望对您有所帮助
© www.soinside.com 2019 - 2024. All rights reserved.