Почему «поиск IMAP по заголовку» завершается ошибкой, когда значение заголовка задается переменной, а не строкой? - PullRequest
0 голосов
/ 01 мая 2020

Я могу получить идентификатор электронной почты с определенным значением заголовка, например:

    res, tmp = self.mail.uid('search', None, '(HEADER Message-ID "<123.456.789@localhost>")')

Затем tmp становится

[b'2993 ']

Но я получаю это значение Message-ID из файла, сохраняю значение в переменной (msg_ID) и даю переменную msg_ID в качестве входных данных.

Когда я пытаюсь использовать приведенный выше код, например:

tmp = "<123.456.789@localhost>"
res, tmp = self.mail.uid('search', None, '(HEADER Message-ID tmp)')

tmp возвращает пустой список

[b '']

, что означает, что он не смог найти целевой адрес электронной почты.

Как я могу дать соответствующий ввод с переменной?

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Я также могу понять это, используя

res, tmp = self.mail.uid('search', None, '(HEADER Message-ID %s)' %tmp)
0 голосов
/ 01 мая 2020

В вашем примере вы отправляете фактическую строку tmp - она ​​не будет волшебным образом развернута внутри строки.

Вам также не хватает другого форматирования вокруг строки, которое нужно добавить, чтобы сделать они идентичны:

'(HEADER Message-ID "' + tmp + '")'

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

...