Python smtplib портит HTML письма - PullRequest
2 голосов
/ 13 июля 2011

Мое приложение генерирует электронные письма в формате html с таблицами, используемыми для отчетов.

s = smtplib.SMTP(self.server)    
s.sendmail(self.addrFrom(), self.addrTo(), message.getvalue())

Когда я проверяю message.getvalue () перед его отправкой, html действителен. Однако, когда я проверяю источник, когда его отправляют в Outlook, он выглядит так:

<TD>04/07/2011</TD><!
 TD>30/04/2011</TD>

вместо:

<TD>04/07/2011</TD><TD>30/04/2011</TD>

У кого-нибудь есть идеи о том, что происходит?

Ответы [ 3 ]

1 голос
/ 13 июля 2011

Вы должны использовать пакет email для генерации правильного тела письма в MIME-кодировке.

Вы также можете попробовать мой ezmail.py модуль, который сделает большую часть этого за вас.

1 голос
/ 19 января 2012

Это не проблема Outlook (или любого другого клиента), а серверы, соответствующие RFC.

Вам придется исправить свою собственную рутину или импортировать перенос текста.

Подробнее см. RFC 5321:

4.5.3.1.6. Текстовая строка

Максимальная общая длина текстовой строки, включая 1000 октеты (не считая дублирующую ведущую точку для прозрачности). Это число может быть увеличено путем использования расширений службы SMTP.

RFC 2821 указывает то же самое.

1 голос
/ 13 июля 2011

Что вы отправляете для заголовка типа контента? Помните, что заголовки должны предшествовать телу сообщения в 3-м аргументе sendmail (от, до, mail), каждый заголовок должен заканчиваться на \ r \ n, и после последнего заголовка должен быть последний \ r \ n, что означает \ r \ n \ r \ n отделяет последний заголовок от тела сообщения.

Или, на самом деле, вы, вероятно, должны использовать \ n, а не \ r \ n из-за всех несовместимых адаптеров MTA.

...