Частичные и разорванные строки в электронных письмах, отправленных Джанго
Я разработал приложение Django, чтобы отправлять электронные письма исследователям в разных университетах и помогать им в их исследованиях. Я протестировал электронные письма с помощью Litmus, и все электронные письма прошли все тесты и полностью обнаружились на разных платформах. Также я хотел, чтобы те, у кого старые браузеры, могли видеть содержимое писем. Вот почему я использовал EmailMultiAlternatives
для отправки как текстового контента, так и альтернативного контента HTML. Однако в одном из университетов, где я тестировал электронные письма, все получали неполные электронные письма. Также в другом университете они получили электронные письма с пунктирными линиями. Это было очень проблематично, если они увидели неработающие гиперссылки.
Проблема была связана с ограничением в 78 символов в строках электронной почты, описанным на этой странице Stackru.
Однако в Джанго EmailMultiAlternatives
документация, нет ничего о том, как добавить заголовки, такие как "формат" или "Ответить" в EmailMultiAlternatives
, Мне потребовалось некоторое время, чтобы понять это, и я отправляю этот пост, чтобы помочь другим сэкономить свое время.
Как вы можете видеть в исходном коде Django, EmailMultiAlternatives
наследуется от EmailMessage, поэтому они принимают одинаковые параметры в конструкторе init. Таким образом, мы можем добавить заголовки, такие как:
msg = EmailMultiAlternatives(subject, message, from_email, to_list, headers={'Reply-To': "email@example.com", 'format': 'flowed'})
1 ответ
Однако в документации Django EmailMultiAlternatives нет ничего о том, как добавить заголовки, такие как "format" или "Reply-To" в EmailMultiAlternatives.
На самом деле, документация очень ясно об этом. Если вы посмотрите на EmailMessage
Документация класса, она имеет следующее:
заголовки: словарь дополнительных заголовков для сообщения. Ключи - это имя заголовка, значения - значения заголовка. Вызывающий должен убедиться, что имена и значения заголовков имеют правильный формат для сообщения электронной почты. Соответствующий атрибут - extra_headers.
Далее далее на той же странице говорится:
Отправка альтернативных типов контента
Может быть полезно включить несколько версий контента в электронное письмо; классический пример - отправка текстовых и HTML-версий сообщения. С библиотекой электронной почты Django вы можете сделать это, используя класс EmailMultiAlternatives. Этот подкласс EmailMessage имеет метод attach_alternative() для включения дополнительных версий тела сообщения в электронное письмо. Все остальные методы (включая инициализацию класса) наследуются непосредственно от EmailMessage.
Итак, отсюда ясно, что вы можете использовать headers
в EmailMultiAlternatives
, так как это просто тонкая абстракция от основного EmailMessage
учебный класс.