Поиск сообщений по разным критериям IMAP.search () - PullRequest
1 голос
/ 01 июля 2019

Я использую библиотеку imaplib для работы с электронной почтой.Как я могу искать сообщения с несколькими параметрами, используя IMAP4.search()?
Например, найти все непрочитанные сообщения, пришедшие после определенной даты, с темой «Тема» от отправителя «test@testmail.com».
У меня была идея сделать поиск «один за другим», я имею в виду поиск следующего параметра в результате предыдущего, но:

    typ, data = con.search(None, '(UNSEEN)')

Результат сохранен в списке, и я могу 'Используйте функцию search() для этого списка.Есть идеи?

Ответы [ 2 ]

1 голос
/ 01 июля 2019

'UNSEEN FROM "test@testmail.com" SUBJECT "Subject" SINCE 17-may-1814' должно быть тем, что вы хотите. Все, что фактически нечувствительно к регистру, верхний регистр часто используется для ключевых слов, но это не имеет значения.

Вы найдете много-много примеров в старых SO-вопросах по этому вопросу .

0 голосов
/ 01 июля 2019

Просто небольшое дополнение к ответу arnt - вместо строки можно использовать список:

    search_list = []
    search_list += ['UNSEEN']
    search_list += ['FROM', '"%s"' % sender_name]
    search_list += ['SUBJECT', '"%s"' % subject]

    typ, data = con.search(None, *search_list)
...