Python/imaplib - 如何获取邮件标签?
我在我的项目中使用imaplib,因为我需要访问Gmail账户。
这里有个事实:在Gmail中,每条消息可以同时出现在多个文件夹、标签中。
我遇到的问题是,我想要获取每条消息的所有标签。
我想到的第一个解决办法是使用“所有邮件”这个文件夹来获取所有消息,然后对每条消息检查一下它是否在每个可用的文件夹里。
不过,我觉得这个方法有点繁琐,所以我在想有没有更好的办法。
谢谢!
2 个回答
0
在IMAP协议中,其实是没有标签这个概念的。Gmail为了让用户能用标签的方式管理邮件,实际上是模拟了这个功能。当你从IMAP中取出一封邮件时,可以查看邮件的原始内容,看看里面是否有一些特殊的头信息,这些头信息就是用来表示标签的。
14
要获取Gmail中某条消息的所有标签,你可以这样做:
t, d = imapconn.uid('FETCH', uid, '(X-GM-LABELS)')
or
t, d = imapconn.fetch(uid, '(X-GM-LABELS)')
顺便提一下,你可以在这里找到更多关于Gmail IMAP扩展的信息:http://code.google.com/apis/gmail/imap/