在Python IMAP库中转义%

1 投票
1 回答
508 浏览
提问于 2025-04-17 12:21

我想请教一下,怎么才能绕过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>')

对我来说,这个运行得非常好。

你有没有试过去掉 "'" ++ "'" 这部分呢?

撰写回答