Как я могу извлечь только тело письма с Python, используя IMAP? - PullRequest
0 голосов
/ 20 декабря 2010

Я относительно новичок в программировании и в Python, но я думаю, что все хорошо. Это код, который у меня есть, и он отлично работает, за исключением того, что получает все сообщение в формате MIME. Мне нужен только текст непрочитанных писем, но я не могу понять, как убрать всю информацию о форматировании и заголовке. Если я отправляю простое электронное письмо с использованием сценария smtp python, который я сделал, он работает нормально и печатает только тело, но если я отправляю электронное письмо с использованием outlook, это выводит кучу лишнего мусора. Любая помощь очень ценится.

client = imaplib.IMAP4_SSL(PopServer)

client.login(USER, PASSWORD)
client.select('INBOX')
status, email_ids = client.search(None, '(UNSEEN SUBJECT "%s")' % PrintSubject)
print email_ids
client.store(email_ids[0].replace(' ',','),'+FLAGS','\Seen')
for email in get_emails(email_ids):

get_emails ()

    def get_emails(email_ids):
        data = []
        for e_id in email_ids[0].split():
            _, response = client.fetch(e_id, '(UID BODY[TEXT])')
            data.append(response[0][1])
        return data

1 Ответ

1 голос
/ 20 декабря 2010

Похоже, вы ищете пакет email:

В пакете электронной почты предусмотрен стандартный синтаксический анализатор, который понимает большинство структур документов электронной почты, включая документы MIME.Вы можете передать парсеру строку или файловый объект, и парсер вернет вам корневой экземпляр сообщения структуры объекта.Для простых сообщений, не относящихся к MIME, полезная нагрузка этого корневого объекта, скорее всего, будет строкой, содержащей текст сообщения.Для сообщений MIME корневой объект возвратит True из своего метода is_multipart (), а к его частям можно получить доступ через методы get_payload () и walk ().
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...