I'd appreciate help with how can I circumvent IMAP UID SEARCH for Message-ID containing % (percent) sign:

import imaplib

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

getting:

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

I've tried

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

with or without quotes all were returning same "Could not parse command".

Server is imap.gmail.com

Thank you,

PS: Thanks much @glglgl, wrapping it into '"' + messageId + '"' actually helped. I'm getting messageId from mysql string field, for some reason it didn't work without this wrapping... Question is solved, thank you very much for lightning speed answer!!!

有帮助吗?

解决方案

I don't see your problem.

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

works perfectly for me.

Have you already tried to omit the "'" + and + "'"?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top