Python: электронная почта get_payload декодировать не удается при нажатии знака равенства? - PullRequest
7 голосов
/ 25 апреля 2009

Попадание в странность с помощью get_payload: кажется, что оно дурачит, когда он видит знак равенства в сообщении, которое он декодирует. Вот код, который отображает ошибку:

import email

data = file('testmessage.txt').read()
msg  = email.message_from_string( data )
payload = msg.get_payload(decode=True)
print payload

А вот пример сообщения: тестовое сообщение .

Сообщение печатается только до первого "=". Остальное опущено. Кто-нибудь знает, что происходит?

Тот же сценарий с «decode = False» возвращает полное сообщение, поэтому кажется, что декодирование недовольно знаком равенства.

Это под Python 2.5.

1 Ответ

6 голосов
/ 25 апреля 2009

У вас проблема с окончанием строки. В теле вашего тестового сообщения используются возвраты каретки (\ r) без перевода строки (\ n). Если вы исправите окончания строки перед анализом письма, все будет работать:

import email, re
data = file('testmessage.txt').read()
data = re.sub(r'\r(?!\n)', '\r\n', data)  # Bare \r becomes \r\n
msg  = email.message_from_string( data )
payload = msg.get_payload(decode=True)
print payload
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...