在Python IMAP库中转义%
我想请教一下,怎么才能绕过IMAP UID SEARCH这个功能,特别是当Message-ID里包含%(百分号)的时候:
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
谢谢你,
附言:
非常感谢@glglgl,把它包裹在'"' + messageId + '"'
里确实有帮助。我是从mysql的字符串字段里获取messageId的,不知道为什么不包裹就不行……
问题解决了,非常感谢你快速的回答!!!
1 个回答
0
我看不出你有什么问题。
import imaplib m=imaplib.IMAP4_SSL([...]) m.login([...])
m.select('Archiv/misc') m.uid('search', None, 'HEADER', 'Message-ID',
'<1i6c6x0.inv6rk1u5kx5cN%68kmac@gmail.com>')
对我来说,这个运行得非常好。
你有没有试过去掉 "'" +
和 + "'"
这部分呢?