Python : imaplib 如何仅获取主要电子邮件 (Gmail)

Python : imaplib how to get primary emails only (Gmail)

Gmail 自动将电子邮件放在三个不同的选项卡下:主要、社交、促销,当我尝试使用下面的代码阅读最新的电子邮件时,它让所有电子邮件都忽略了这些选项卡。如何仅在主要选项卡下接收电子邮件?我应该使用另一个文件夹名称吗?

M.select("INBOX")
v_start_date = (datetime.date.today() - datetime.timedelta(days_limit)).strftime("%d-%b-%Y")
v_result, v_mail = M.uid('search', None, '(SENTSINCE {date})'.format(date=v_start_date))

imaplib 代码示例: https://gist.github.com/robulouski/7441883

Gmail 收件箱屏幕截图:

如果您使用 GMAIL IMAP Extensions,您可以使用 X-GM-RAW 在 gmail 查询语言中进行自定义搜索。下面是获取主要类别中最近 UID 列表的示例:

a UID SEARCH SINCE 1-May-2018 X-GM-RAW "Category:Primary"
* SEARCH 25032 25033 25034 25035 25036
a OK SEARCH completed (Success)

这是促销标签:

a UID SEARCH SINCE 1-May-2018 X-GM-RAW "Category:Promotions"
* SEARCH 25026 25028 25030 25031
a OK SEARCH completed (Success)

在 Python 中,这可能看起来像:

m.uid('search', 'SINCE 1-May-2018 X-GM-RAW "Category:Primary"')