https://blog.csdn.net/pengzhi5966885/article/details/75019099

MAP搜索键:

'ALL':返回该文件夹中的所有邮件。如果你请求一个大文件夹中的所有信息,可能会遇到imaplib的大小限制

'BEFORE/ON/SINCE date':分别返回给定的date之前、当天、之后IMAP服务器接受的消息,日期格式必须是05-Jul-2017
此外,虽然“SINCE 05-Jul-2017”将匹配7月5日当天和之后的消息,但是“BEFORE 05-Jul-2017”仅匹配7月5日之前的消息,不包括7月5日当天

'SUBJECT/BODY/TEXT string':分别返回string出现在主题、正文、主题或正文中的消息,如果string中有空格,就是用双引号

'FROM/TO/CC/BCC string':返回所有信息,其中string分别出现在“from”邮件地址、“to”邮件地址、“cc”(抄送)地址、或“bcc”(密件抄送)地址
如果string中有多个邮件地址,就是用空格将他们分割开,并使用双引号

'SEEN/UNSEEN':分别返回包含和不包含\Seen标记的所有信息。如果电子邮件已经被fetch()方法调用访问,或者你曾在电子邮件程序中或网络浏览器中点击过它,
就会有\Seen标记,比较常用的说法是“已读”而不是“已看”

'ANSWERED/UNANSERED':分别返回包含和不包含\Answered标记的所有信息,如果消息已答复就会有\Answered标记

'DELERED/UNDELETED':分别返回包含和不包含\Deleted标记的所有信息,用delete_messages()方法删除的邮件就会有\Deleted标记,直到调用expunge()方法才
会永久删除

'DRAFT/UNDRAFT':分别返回包含和不包含\Draft标记的所有信息,草稿邮件通常保存在单独的草稿文件夹中,而不是收件箱

'FLAGGED/UNFLAGGED':分别返回包含和不包含\Flagged标记的所有信息,这个标记通常用来标记电子邮件的“重要”或“紧急”

'LARGER/SMALLER N':分别返回大于或小于N个字节的所有信息

'NOT search-key':返回搜索键不会返回的那些信息

'OR search-key1 search-key2':返回符合第一个或者第二个搜索键的信息
————————————————
 

imapObj.search(['all'])
imapObj.search(['ON 05-Jul-2017'])
imapObj.search(['SINCE 01-Jul-2017','BEFORE 05-Jul-2017'])
imapObj.search(['OR FROM alie@qq.com FROM habo@qq.com'])
 
#search不返回电子邮件本身,而是返回邮件的唯一整数ID(UID),然后可以将这些UID传入fetch(),获得邮件内容
UIDS = []
UIDS = imapObj.search(['all'])

 

大小限制:
如果搜索匹配大量的电子邮件,Python可能会抛出imap.error:got more than 10000 bytes的异常,必须断开重连IMAP服务器
可以调整限制的字节数

import imaplib
imaplib._MAXLINE = 10000000

从原始消息中获取正文

电子邮件可以是纯文本、HTML或者两者混合

纯文本电子邮件只包含文本,而HTML电子邮件可以有颜色、字体、图像、和其他功能

如果电子邮件是纯文本,PyzMessage对象会将html_part属性设为None,同样,当邮件只有HTML,PyzMessage对象会将text_part属性设置为None  (import pyzmail

否则,text_part或者html_part将有一个get_payload()方法,将电子邮件的正文返回为bytes数据类型,但是这仍然不是我们可以使用的字符串,
最后一步对get_payload()返回的bytes值调用decode()方法。decode()方法接受一个参数:这条消息的字符编码,保存在text_part.charset或
html_part.charset属性中
 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐