测试Python的poplib模块读取邮箱信息

本文介绍了使用Python poplib模块通过POP3协议连接163邮箱时遇到的问题,包括邮件数量获取不准确的情况。问题源于163邮箱的默认设置限制了邮件收取范围。解决方法是调整邮箱设置,允许收取全部邮件。尽管如此,Python官方推荐使用IMAP协议,因为IMAP服务器通常实现得更好,后续内容将转向学习imaplib模块。
摘要由CSDN通过智能技术生成

  Python中的poplib模块能够连接POP3 服务器,可以用于读取邮箱信息,不过根据python官网文献(参考文献4)中的提醒:“POP3 已经过时,POP3 服务器的实现质量差异很大,而且大多很糟糕。如果邮件服务器支持 IMAP,则最好使用 imaplib.IMAP4 类,因为 IMAP 服务器一般实现得更好“。本文学习并验证参考文献1中的示例代码,后续会接着学习imaplib的用法。
  以163邮箱为例,使用poplib模块以POP3方式连接邮箱服务器需要在邮箱中开启POP3/SMTP服务。如下图所示,登录163邮箱,点击设置链接,在弹出的菜单中选择POP3/SMTP/IMAP,在开启服务中开启POP3/SMTP服务即可。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  163邮箱默认POP3/SMTP服务是开启的,此时使用poplib模块连接时使用的密码是邮箱登录密码。如果将其关闭,然后再次开启,则会得到一个随机的授权密码,此时再使用邮箱登录密码则无法连接,需要使用上述授权密码才能正常登录。
  直接使用的参考文献1中的代码进行测试(主要功能为获取邮件数量),用到的主要函数说明及代码如下:

序号函数说明
1POP3_SSL经以SSL 加密方式连接到服务器
2set_debuglevel设置实例的调试级别,它控制着调试信息的数量。默认值 0 不产生调试信息。值 1 产生中等数量的调试信息,通常每个请求产生一行。大于或等于 2 的值产生的调试信息最多。
3user发送用户名
4pass_发送密码
5stat获取邮箱状态。结果为 2 个整数组成的元组:(message count, mailbox size)。
6quit断开连接
# coding=utf-8

import poplib

host='pop.163.com'
username='XXXXXXXXXX@163.com'
password='XXXXXXXXXX'

pp=poplib.POP3_SSL(host)
pp.set_debuglevel(1)
pp.user(username)
pp.pass_(password)

ret=pp.stat()
mailCount=ret[0]
print('一共',mailCount,'封邮件')

pp.quit()

  运行上述程序,看到返回的结果中邮件数量为0,但实际邮箱中邮件数量有将近100份左右,不清楚原因为何。
在这里插入图片描述
  百度上述问题,在参考文献3中看到了解释,应该还是邮箱设置的问题,其默认设置为收取最新30天邮件,将其设置改为收取全部邮件即可(实际测试时从服务器接收的数量不稳定,有时明明设置了授权全部邮件,但要多次运行程序后才会收到正确的邮件数量)。

在这里插入图片描述
  本文仅是根据参考文献对poplib模块进行简单测试。Python的官方文档建议使用IMAP,同时参考文献5和6都介绍IMAP比POP3方便使用,后续主要学习Python中的imaplib模块。

参考文献:
[1]Python从菜鸟到高手
[2]https://www.jianshu.com/p/544a35bc8c92
[3]https://www.cnblogs.com/robzh/p/14770497.html
[4]https://docs.python.org/zh-cn/3/library/poplib.html?highlight=poplib#module-poplib
[5]https://zhuanlan.zhihu.com/p/28377718
[6]http://help.163.com/10/0203/17/5UK7GVU100753VB9.html?servCode=6020251

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值