Как определить, что электронное письмо закодировано в Base64? - PullRequest
3 голосов
/ 28 ноября 2008

У меня возникают трудности с определением, является ли тело текстового сообщения электронной почты кодированным base64 если это так, используйте эту строку кода; использование Jython 2.2.1

dirty=base64.decodestring(dirty)

иначе продолжить как обычно.

Это код, который у меня есть. Какая строка кода позволит мне извлечь это из электронного письма:

"Content-Transfer-Encoding: base64"

import email, email.Message
import base64

def _get_email_body(self):
    try:
        parts=self._email.get_payload()
        check=parts[0].get_content_type()
        if check=="text/plain":
            part=parts[0].get_payload()
            enc = part[0]['Content-Transfer-Encoding']
            if enc == "base64":
                dirty=base64.decodestring(dirty)
        elif check=="multipart/alternative":
            part=parts[0].get_payload()
            enc = part[0]['Content-Transfer-Encoding']
            if part[0].get_content_type()=="text/plain":
                dirty=part[0].get_payload()
                if enc == "base64":
                    dirty=base64.decodestring(dirty)
            else:
                return "cannot obtain the body of the email"
        else:
            return "cannot obtain the body of the email"
        return dirty
    except:
        raise

ОК, этот код работает сейчас! спасибо всем

Ответы [ 2 ]

5 голосов
/ 28 ноября 2008

Попробуйте:

enc = msg['Content-Transfer-Encoding']

Это заголовок, поэтому вы не сможете увидеть его на теле. Вы должны быть в состоянии добраться до того же места, где вы найдете субъект.

0 голосов
/ 25 мая 2017

Это заголовок, но вы должны сначала получить полезную нагрузку из сообщения.

Это будет:

header = msg.get_payload () [0]

заголовок [ 'Content-Transfer-Encoding']

Я использую Python 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...