Imapclient 模块无法正确阅读电子邮件
Imapclient module not reading emails PROPERLY
我正在使用 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'',但它不起作用。它刚刚完全打印出来。如何正式打印?
imapclient docs demonstrate how to create email message objects using Python's email 包:
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 class 提供了多种方法来访问消息的不同部分,例如 headers、body、mime 部分。
我正在使用 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'',但它不起作用。它刚刚完全打印出来。如何正式打印?
imapclient docs demonstrate how to create email message objects using Python's email 包:
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 class 提供了多种方法来访问消息的不同部分,例如 headers、body、mime 部分。