Новая строка отображается на экране, но не в электронной почте - PullRequest
8 голосов
/ 26 августа 2010

У меня есть список (errors), который я одновременно печатаю на экране и отправляю в теле письма. Но сначала я разделяю элементы списка символом новой строки:

"\n".join(errors)

Затем я печатаю его на консоль и отправляю по электронной почте. На консоли он выглядит разделенным новыми строками:

Error generating report
Another error

Однако в электронном письме они не отображаются ...

Error generating report Another error

Что происходит?

Edit:

Чтобы еще больше усложнить ситуацию, я только что заметил, что отправлено 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 во втором ...?

Ответы [ 4 ]

12 голосов
/ 26 августа 2010

Если ваша электронная почта отформатирована в формате HTML, это повлияет на представление новых строк.

11 голосов
/ 26 августа 2010

Я бы попробовал две вещи:

  • попробуйте с CRLF ("\r\n") вместо просто LF

  • убедитесь, что ваше письмо не отправляется в режиме HTML, или, если да, попробуйте заменить "\n" на "<br>"

6 голосов
/ 26 августа 2010

Вы читаете электронную почту в Outlook? Outlook удалит «лишние разрывы строк» ​​(то есть те разрывы строк, которые он считает ненужными по какому-то тайному правилу) из обычной текстовой почты. Чтобы обойти это, я конвертирую почту, такую ​​как логи, в HTML перед отправкой. Это очень просто; просто оберните его в

... 
теги (с соответствующими заголовками HTML, конечно).
0 голосов
/ 26 августа 2010

Для такого типа проблем я считаю, что просмотр нативного кода в электронной почте очень помогает. Я использую Eudora для этого, так как он хранит всю электронную почту в собственном текстовом формате. Я могу посмотреть на форматирование, не просматривая его в почтовом клиенте, открыв почтовый ящик в Блокноте или другом текстовом редакторе. Если вы находитесь в среде UNIX, возможно, лучше взглянуть на это в vi или другом простом текстовом редакторе.
Вся электронная почта - это чистый текст, и она конвертируется в то, что вы видите клиентом электронной почты.

...