#python #google-app-engine #email #encoding #binary
#python #google-app-engine #Адрес электронной почты #кодирование #двоичный
Вопрос:
Я пишу приложение Google App engine, которое обрабатывает входящую почту, и вот код, который я в настоящее время использую для обработки почтовых сообщений:
for content_type, body in email_bodies:
#8bit bug in mail messages - see bug report here
#http://code.google.com/p/googleappengine/issues/detail?id=2383
if body.encoding == '8bit':
body.encoding = '7bit'
#test for html content
if content_type == "text/html":
#parse html result
if content_type == "text/plain":
decoded_msg_body = body.decode()
Однако я только что получил сообщение, в котором использовалась схема двоичного кодирования, и когда моя программа попыталась обработать сообщение с помощью body.decode(), я получил UnknownEncodingError . Как эта программа должна анализировать двоичный тип содержимого? Кроме того, как я могу имитировать этот тип сообщения в моей локальной версии GAE, чтобы я мог отлаживать и тестировать его?
Я ценю вашу помощь, Кевин
Ответ №1:
Вместо того, чтобы изобретать велосипед, вам следует попробовать встроенный в Python анализатор электронной почты.
http://docs.python.org/library/email.parser.html
Он предназначен для обработки запросов, связанных с получением всевозможных форматов электронной почты в хороший объект Python. Используйте его для синтаксического анализа, и вы получите хорошо предсказуемые объекты для работы.
Модуль электронной почты не выполняет отправку и получение сообщений, он просто помогает собрать их вместе и проанализировать.
Комментарии:
1. Это будет работать на GAE, если вы используете свойство «original» сообщения, что вполне справедливо. Спасибо, Пол.
2. Потрясающе. Я не был уверен, насколько хороша обработка нечетных случаев, но, учитывая, как эти вещи обычно работают, я решил, что, вероятно, это был хороший выстрел.