Python: imaplib, как получать только основные письма (Gmail) - PullRequest
0 голосов
/ 03 июля 2018

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 inbox sample

1 Ответ

0 голосов
/ 03 июля 2018

Если вы используете GMAIL IMAP Extensions , вы можете выполнить пользовательский поиск на языке запросов gmail, используя X-GM-RAW. Вот пример получения списка последних 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"')
...