×

邮箱 文件夹 imapclient imaplib unsafe

使用Python获取邮箱指定文件夹的邮件数量

鹭岛小千 鹭岛小千 发表于2021-05-29 20:53:37 浏览333 评论0

抢沙发发表评论

【问题描述】如何使用Python获取邮箱指定文件夹(收件箱、发件箱等)的邮件数量呢?

12-1.png

【小千解答】先调用IMAPClient类的select_folder方法设定文件夹,再读取返回字典的b'EXISTS'键值。

12-2.png

示例代码如下:

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)

运行结果:

12-3.png


Q:为什么获取的收件箱邮件数量和图12-1所示的不同呢?

A:和邮箱→客户端设置→“收取选项”的参数设置有关。

12-4.png


如果操作对象是163邮箱,在select_folder方法之前,要先调用id_方法传入库的名称和版本号。

12-5.png

否则,程序会报如下错误:

imaplib.error: select failed: EXAMINE Unsafe Login. Please contact kefu@188.com for help


打赏码.png


【参考资料】

  1. IMAPClient 2.2.0 documentation - IMAPClient Class

  2. 解决网易163邮箱Unsafe Login.错误

  3. 【2020可用】Python使用 imaplib imapclient连接网易邮箱提示 Unsafe Login. Please contact kefu@188.com for help 的解决办法 


群贤毕至

访客