экранирование% в Python IMAP lib - PullRequest
       17

экранирование% в Python IMAP lib

1 голос
/ 05 февраля 2012

Буду признателен за помощь в том, как обойти ПОИСК UID IMAP для идентификатора сообщения, содержащего знак% (процентов):

import imaplib

messageId = '<CA824955.19602%username@hostname.com>'
M.uid('search', None, 'HEADER', 'Message-ID', "'" + messageId + "'")

получение:

51:55.73 > EKEE4 UID SEARCH HEADER Message-ID '<CA824955.19602%username@hostname.com>'
51:55.83 < EKEE4 BAD Could not parse command
51:55.83 BAD response: Could not parse command

Я пробовал

CA824955.19602%username@hostname.com
'CA824955.19602%username@hostname.com'
'CA824955.19602\%username@hostname.com'
'CA824955.19602%%username@hostname.com'

с кавычками или без них все возвращали одно и то же "Не удалось проанализировать команду".

Сервер - imap.gmail.com

Спасибо,

PS: Большое спасибо @glglgl, обертывание в '"' + messageId + '"' действительно помогло. Я получаю messageId из строкового поля mysql, по какой-то причине он не работал без этой упаковки ... Вопрос решен, большое спасибо за молниеносный ответ !!!

1 Ответ

0 голосов
/ 05 февраля 2012

Я не вижу твоей проблемы.

import imaplib m=imaplib.IMAP4_SSL([...]) m.login([...])
m.select('Archiv/misc') m.uid('search', None, 'HEADER', 'Message-ID',
   '<1i6c6x0.inv6rk1u5kx5cN%68kmac@gmail.com>')

отлично работает для меня.

Вы уже пытались опустить "'" + и + "'"?

...