【问题描述】如何使用Python获取邮箱指定文件夹(收件箱、发件箱等)的邮件数量呢?
【小千解答】先调用IMAPClient类的select_folder方法设定文件夹,再读取返回字典的b'EXISTS'键值。
示例代码如下:
import imapclient with imapclient.IMAPClient('imap.exmail.qq.com') as xqmail: xqmail.login('xiaoqian@office.cn','QQ1695716607') # xqmail.id_({'name':'IMAPClient','version':'2.2.0'}) inbox = xqmail.select_folder('INBOX',True) num = inbox[b'EXISTS'] print('收件箱一共有 %d 封邮件' % num) outbox = xqmail.select_folder('Sent Messages',True) num = outbox[b'EXISTS'] print('发件箱一共有 %d 封邮件' % num)
运行结果:
Q:为什么获取的收件箱邮件数量和图12-1所示的不同呢?
A:和邮箱→客户端设置→“收取选项”的参数设置有关。
如果操作对象是163邮箱,在select_folder方法之前,要先调用id_方法传入库的名称和版本号。
否则,程序会报如下错误:
imaplib.error: select failed: EXAMINE Unsafe Login. Please contact kefu@188.com for help
【参考资料】
【2020可用】Python使用 imaplib imapclient连接网易邮箱提示 Unsafe Login. Please contact kefu@188.com for help 的解决办法