Модуль Imapclient не читает электронные письма - PullRequest
0 голосов
/ 15 марта 2019

Я использую python3 и, используя мои учетные данные электронной почты, эта функция печатает блок текста, который, кажется, разделен на формальные разделы. Вот мой код для чтения писем:

import pprint
import imapclient

# Email = Your email
# Password = Your password
# folder = just type '[Gmail]/All Mail'.
# readonly = Tell wether emails are marked as read or not when you read them here.
# search = Search term for gmail. Can be empty by typing ''.
def ReadEmail(Email, Password, folder, readonly, search):
    imapObj = imapclient.IMAPClient('imap.gmail.com', ssl=True)
    imapObj.login(' ' + Email + ' ', ' ' + Password + ' ')
    pprint.pprint(imapObj.list_folders())
    imapObj.select_folder(str(folder), readonly=readonly)
    UIDs = imapObj.gmail_search(str(search))
    rawMessages = imapObj.fetch(UIDs, ['BODY[]'])
    pprint.pprint(rawMessages)

Кстати, к этому электронному письму можно обратиться через менее безопасные приложения в настройках Google. В любом случае, когда вы запускаете это со своими учетными данными, вы получаете этот большой блок текста. В примечаниях говорится, что к чему, и в моем сценарии были цитаты, чтобы напомнить мне, где что находится:

                #    {1: {b'BODY[]': b'Bcc: thedestoryer11@gmail.com\r\nReturn-Path: '      <<< Receiver's email
                #               b'<noreply.smtp.supermechm500@gmail.com>\r\nRece'           <<< Sender of an email
                #               b'ived: from [127.0.0.1] (ec2-23-21-200-247.comput'
                #               b'e-1.amazonaws.com. [23.21.200.247])\r\n       '
                #               b' by smtp.gmail.com with ESMTPSA id 24-v6sm169089'         <<< Sent using...
                #               b'38qts.19.2018.11.14.16.31.38\r\n        for <t'
                #               b'hedestoryer11@gmail.com>\r\n        (version=T'           <<< Reciever of the email
                #               b'LS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=12'
                #               b'8/128);\r\n        Wed, 14 Nov 2018 16:31:38 -'
                #               b'0800 (PST)\r\nMessage-ID: <5becbe6a.1c69fb81.4'
                #               b'af4f.c041@mx.google.com>\r\nDate: Wed, 14 Nov '           <<< Date Received
                #               b'2018 16:31:38 -0800 (PST)\r\nFrom: noreply.smt'
                #               b'p.supermechm500@gmail.com\r\n\r\nTesting from SM'         <<< Message (Will not contain buttons or images. Check your email application for these media
                #               b'TP +-+\r\n',

Я вижу там \ n, \ r и b '', но он не работает. Это просто распечатано полностью. Как мне распечатать это формально?

1 Ответ

0 голосов
/ 16 марта 2019

imapclient документы демонстрируют, как создавать объекты сообщений электронной почты, используя пакет email Python:

import email

for uid, message_data in server.fetch(messages, 'RFC822').items():
    email_message = email.message_from_bytes(message_data[b'RFC822'])
    print(uid, email_message.get('From'), email_message.get('Subject'))

Если вы хотите распечатать полное сообщение, вы можете сделать

print(email_message)

Класс email.message.EmailMessage предоставляет различные методы для доступа к различным частям сообщения, таким как заголовки, тело, части mime.

...