使用IMAP4和Python获取GMail中的星标消息
我在网上找了很多关于使用IMAP的信息,但我还是不太明白怎么用它来满足我的需求。我知道怎么获取邮箱里的所有邮件和所有已读邮件,但我该怎么处理带星标的邮件呢?
请给我一些Python代码的例子,教我怎么通过IMAP4从GMail获取带星标的邮件,怎么检查某封邮件是带星标的还是没有星标的,以及怎么给某封邮件加星标或去掉星标。
2 个回答
0
from imap_tools import MailBox, AND
with MailBox('imap.mail.com').login('test@mail.com', 'pwd', 'INBOX') as mailbox:
# get list of subjects of flagged emails from INBOX folder
subjects = [msg.subject for msg in mailbox.fetch(A(flagged=True))]
# set flag on emails from INBOX that html contains <b> tag
flags = [imap_tools.MailMessageFlags.FLAGGED]
mailbox.flag([m.uid for m in mailbox.fetch() if '<b>' in m.html], flags, True)
# print flags for all emails from INBOX
for msg in mailbox.fetch(): print(msg.date, msg.flags)
10
Gmail中的“星标”状态直接对应于IMAP的\Flagged
关键字。所以你可以通过设置或取消设置\Flagged
来切换邮件的星标状态:
IMAP4.store(num, '+FLAGS', '\\Flagged')
你可以通过搜索FLAGGED
来查找带星标的邮件(或者通过UNFLAGGED
来查找没有星标的邮件):
IMAP4.search(None, 'FLAGGED')
Gmail还为你提供了一个虚拟文件夹,里面包含了所有带星标的邮件。如果你SELECT "[Gmail]/Starred"
,你就能看到邮箱中所有带星标的邮件:
IMAP4.select('[Gmail]/Starred')