Как мне искать почту с помощью rfc822msgid: - PullRequest
0 голосов
/ 01 января 2019

Я получаю сообщение об ошибке всякий раз, когда пытаюсь найти свой почтовый ящик, используя rfc822msgid с python2 и imaplib.Ниже приведен пример кода, который я использую для поиска определенного электронного письма ...

"rfc822msgid:{msg_id}".format(msg_id=searchtool).replace("\n", "")

Переменная searchtool - это правильный идентификатор сообщения из письма, которое я ищу.Я смог убедиться в этом, зайдя на страницу gmail Google и введя точно такую ​​же команду в поле поиска, чтобы получить письмо, которое я ищу, из поискового запроса.Однако, когда я пытаюсь сделать это через imaplib в python2, я получаю эту ошибку:

raise self.error('%s command error: %s %s' % (name, typ, data))
imaplib.error: SEARCH command error: BAD ['Could not parse command']

До сих пор я пытался поместить двойные кавычки вокруг всего поискового запроса и вокруг идентификатора сообщения, и я все еще получаюточно такая же ошибка.Если кто-то из вас, пожалуйста, покажет мне, как это исправить, я буду очень признателен.Я потратил 2 дня на поиск в Google, пытаясь выяснить, почему я получаю эту ошибку, но я надеюсь, что один из вас сможет мне помочь.

1 Ответ

0 голосов
/ 01 января 2019

Это синтаксис, поддерживаемый сетевым поиском Gmail, но не поддерживаемый в IMAP.

Способ поиска по идентификатору сообщения с использованием imaplib будет выглядеть примерно так:

typ, result = imap4obj.search(None, '(HEADER Message-ID "{}")'.format(msgid))

Пример в документации более детально показывает, как использовать результаты.

...