2014-12-11 1 views
0

Я получаю электронную почту в приложение python GAE. Содержимое поля «Кому» и «Отправитель» соответствует ожидаемому, но тело содержит дополнительную информацию до фактического тела сообщения. Как получить только фактическое сообщение без дополнительной информации о сообщении?Использование GAE python для получения электронной почты, но Тело сообщения содержит неожиданную информацию

Дополнительная информация:

От никто чт 11 декабря 13:48:29 2014 Content-Transfer-Encoding: 7bit MIME-Version: 1.0 Content-Type: Текст/равнину; charset = "utf-8"

Мой код следующий;

message = mail.InboundEmailMessage(self.request.body) 
    a, b = message.to.split('<',1) 
    recip, c = b.split('@', 1) 
    logging.debug("The email was to: %s" % recip.upper()) 
    if recip.upper() == "MESSENGER": 
     self.process_Messenger(message) 
    if recip.upper() == "SUPPORT": 
     #Will add code to forward the email to actual support message box and send a reply. 
     logging.debug("We received an email for SUPPORT") 
    return 

def process_Messenger(self, message): 
    logging.debug("In process_Messenger code") 
    # Email subjects to Messenger should start with 'Re: ' plus the assemblyid 
    . 
    . 
    # Construct the message 
    messageid = LHMessage.construct_message(my_lhmessage, "assemblyid", message.body, "threadid", "sender") 
    . 
    . 

Код для конструкции_message is;

def construct_message(self, assemblyid, pmessage, threadid, sender): 
      logging.debug("In construct_message code") 
      message = str(pmessage) 
      logging.debug("Processing message: %s" % message) 

И сообщение об отладке;

Обработка сообщения: От никто Thu Dec 11 13:48:29 2014 content-transfer-encoding: 7bit MIME-Version: 1.0 Content-Type: text/plain; charset = "....

ответ

1

Документация по GAE here несколько вводит в заблуждение, поскольку вы имеете дело с InboundEmailMessage, который наследуется от MailMessage, но не содержит красивого тела текста, как ожидалось. (Из ссылки: тело: «Открытый текст содержимого тела сообщения.»)

Вы можете использовать атрибут «тела» вместо, который расщепляет сообщение в текстовых и HTML органов

Я использовал это следующим образом:.

text_bodies = message.bodies('text/plain') 
for content_type, body in text_bodies: 
    text = body.decode() 

См. this link для получения дополнительной информации.

+0

Это сработало! Спасибо за помощь. – MichaelSc

Смежные вопросы