【问题标题】:Newline showing up on screen but not in email换行出现在屏幕上,但不在电子邮件中
【发布时间】:2011-04-04 10:31:35
【问题描述】:

我有一个列表 (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 格式吗...?

【问题讨论】:

  • 您的电子邮件是 html 格式的吗?这可能会影响换行符的显示...
  • @Eric Snow - 我正在更新您的评论...看来您解决了我的问题 :) 如果您将其发布为答案,我会支持并接受它。

标签: python email newline


【解决方案1】:

如果您的电子邮件是 HTML 格式,那么这会影响换行符的显示。

【讨论】:

    【解决方案2】:

    我会尝试两件事:

    • 尝试使用 CRLF ("\r\n") 而不仅仅是 LF

    • 确保您的电子邮件不是以 HTML 模式发送的,或者,如果是,请尝试将 "\n" 替换为 "<br>"

    【讨论】:

    • 感谢您的帮助!它处于 HTML 模式,并且换行符起到了作用
    【解决方案3】:

    您正在阅读 Outlook 中的电子邮件吗? Outlook 将从纯文本邮件中删除“额外的换行符”(即,根据某些神秘规则认为不必要的换行符)。为了解决这个问题,我在发送之前将日志等邮件转换为 HTML。这很简单;只需将其包装在

    ... 
    标记中(当然要使用适当的 HTML 标头)。

    【讨论】:

    • Outlook 通常还会告诉用户它在消息顶部的通知区域中删除了额外的换行符,如果您单击它,则应该有一个恢复它的选项。我认为奥术神秘超级高级电子邮件选项中还有一个选项可让您切换此功能。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      你试过用标签替换\n吗?

      解决了我使用 win32com 发送 Outlook 电子邮件的 mail.HTMLBODY 问题。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        • 2011-01-27
        • 2013-01-31
        相关资源
        最近更新 更多