Как я могу искать почту в папке imap, начиная с EML-файла с python? - PullRequest
0 голосов
/ 11 января 2019

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

Я пытался загрузить почту из файла с помощью модуля email, но продолжаю получать ошибки всякий раз, когда запускаю функцию поиска модуля imaplib, начиная с данных, содержащихся в почте.

В этом случае я предполагаю, что почта приходит из текущего почтового ящика.

Это код, который я сейчас использую

import imaplib, email

m = imaplib.IMAP4_SSL(IMAP_SERVER)
m.login(IMAP_USER, IMAP_PWD)
m.select()

mail_file = open('./file.eml')
raw_mail = mail_file.read()
mail = email.message_from_string(raw_mail)

resp, items = m.search(None, '(FROM "' + mail["FROM"] +'")')

Но я получаю следующую ошибку:

Traceback (последний вызов был последним):

  File "<stdin>", line 1, in <module>
  File "C:\Users\user\AppData\Local\conda\conda\envs\py353\lib\imaplib.py", line 707, in search
    typ, dat = self._simple_command(name, *criteria)
  File "C:\Users\user\AppData\Local\conda\conda\envs\py353\lib\imaplib.py", line 1180, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "C:\Users\user\AppData\Local\conda\conda\envs\py353\lib\imaplib.py", line 1011, in _command_complete
    raise self.error('%s command error: %s %s' % (name, typ, data))
imaplib.error: SEARCH command error: BAD [b'Error in IMAP command SEARCH: Unknown argument DATE (0.000 + 0.000 secs).']`

Как мне это сделать и какие фильтры я могу использовать, чтобы иметь разумный шанс получить именно то письмо, которое я хочу получить в результатах?

Редактировать: по запросу мои mail['FROM'] возвращает 'test sender\n\t<sender@domain.com>'

Я сделал тестовое жесткое кодирование аналогичного формата и удалил специальные символы, но, конечно, мне вернули другое письмо с соответствующим отправителем. Также я пытаюсь получить правильную почту, не изменяя никаких данных самым автоматическим способом.

...