我正在尝试从我的 IMAP 服务器获取消息。这是我的代码的简短版本:
>>> import imaplib
>>> m = imaplib.IMAP4_SSL(host='my.host.com')
>>> m.login('username', 'password')
>>> m.select('INBOX')
python3.4 中的 imaplib 模块与RFC 2060标准兼容。那里说:
FETCH 命令检索与邮箱中的消息关联的数据。要获取的数据项可以是单个原子或带括号的列表。
现在我得到了一些不同的结果,我无法理解:
>>> m.fetch('1613', '(ALL)')
imaplib.error: FETCH command error: BAD [b'Invalid Fetch attribute ALL']
>>> m.fetch('1613', 'ALL')
('OK', [b'1613 (FLAGS (\\Seen) INTERNALDATE' ... etc ...
>>> m.fetch('1613', '(FLAGS)')
('OK', [b'1613 (FLAGS (\\Seen))'])
>>> m.fetch('1613', 'FLAGS')
('OK', [b'1613 (FLAGS (\\Seen))'])
>>> m.fetch('1613', '(FLAGS ENVELOPE)')
('OK', ... etc ...
>>> m.fetch('1613', '(FLAGS ALL)')
imaplib.error: FETCH command error: BAD [b'Invalid Fetch attribute ALL']
有人可以向我解释为什么我不能使用ALL
带括号的项目吗?
我问的原因是因为我使用的是IMAPClient模块,它会自动将括号添加到参数中,因此该ALL
项目将不起作用。