Как определить, закодировано ли электронное письмо в формате Base64?

Мне трудно определить, закодировано ли текстовое сообщение электронной почты в кодировке base64. если это так, используйте эту строку кода; используя jython 2.2.1

dirty=base64.decodebytes(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.decodebytes(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.decodebytes(dirty)
            else:
                return "cannot obtain the body of the email"
        else:
            return "cannot obtain the body of the email"
        return dirty
    except:
        raise

Ладно, этот код теперь работает! Спасибо всем

Людям, отвечающим вам, было бы полезно, если бы вы могли сообщить нам, какие объекты библиотеки MIME вы используете. Вы используете библиотеки Python или объекты Java?

Matt Campbell 28.11.2008 05:53

хорошо, спасибо за напоминание, обычно это неплохо!

Setori 28.11.2008 06:32
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
3
7 571
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Пытаться:

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

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

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

Это будет:

header = msg.get_payload()[0]
header['Content-Transfer-Encoding']

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

Кажется, что иногда он содержится в объекте сообщения, а иногда в message.get_payload () [0], как упоминал Леон. Кто-нибудь может это прояснить?

yoon 23.04.2020 05:51

Это заголовок для каждой части сообщения. Таким образом, основные части тела (текст или html) могут быть разными, как и любые вложения. Как сказано выше, вы должны получить полезную нагрузку для каждой части, а затем определить Content-Transfer-Encoding. Я удивлен, что это не было добавлено как свойство, но, поскольку я недостаточно умен, чтобы написать весь класс электронной почты, я не буду слишком сильно критиковать ;-)

JonnyCab 06.01.2021 01:21

Другие вопросы по теме