【问题描述】如何使用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 的解决办法