Почему тема письма содержит символы перевода строки или возврата каретки? - PullRequest
0 голосов
/ 22 апреля 2020

Я делаю код для проверки почтового ящика и пересылки невидимых писем другому пользователю.
Но иногда происходит сбой с ошибкой:

ValueError: Значения заголовка могут не содержать перевод строки или символы возврата каретки

Я проверил необработанные извлеченные данные и обнаружил, что значение 'Subject' содержит \ r \ n.
Не все письма содержат, но некоторые содержат.
Это просто выглядит нормально в почтовом ящике, и я понятия не имею, почему некоторые содержат такие символы.
Имеет ли это отношение к длине темы?
Как я могу справиться с этими ситуациями?
Спасибо :)

1 Ответ

1 голос
/ 22 апреля 2020

Сообщения электронной почты имеют максимальную длину строки. Это исторически, и, так сказать, правило не соблюдается 100% времени. Но в полях заголовка пробел должен обрабатываться так же, как CR LF и последовательность пробелов или символ htab. Это действительно длинный объект, закодированный таким образом:

Subject: Pretend this is about 80-90
  characters long

Самый простой способ справиться с этим - считать любые последовательности пробельных символов одним пробелом.

Читать источник любого сообщения электронной почты, вы увидите эту упаковку в большинстве случаев. Например, поля Received почти всегда переносятся, и довольно часто To, если есть много адресатов, или Content-Type / Content-Disposition для вложений.

...