记录使用Python的imaplib模块读取邮箱信息的测试过程

  Python的imaplib模块支持以IMAP方式与IMAP4服务器交互,本文记录连接qq邮箱和163邮箱的测试过程。测试代码直接使用的参考文献2中的代码(代码如下),代码很简单,但是测试过程却一言难尽。

# coding=utf-8

import imaplib
import base64

connection=imaplib.IMAP4_SSL('imap.163.com',993)
username='XXXXXXXX@163.com'
password='XXXXXXXX'

try:
    connection.login(username,password)    
except Exception as err:
    print('登录失败:',err)

connection.print_log()

res,data=connection.list()
print(res,data)
print(data[0])

res,msg_ids=connection.search(None,'ALL')
print(res,msg_ids)

res,msg_data=connection.fetch(data[0],'UID BODY[TEXT]')
print(msg_data)

connection.logout()

  首先测试的是qq邮箱,一直在用的qq邮箱默认IMAP/SMTP服务关闭,如果要开启的话,必须先要升级到最新的密码保护。从网页登录qq网站申请密码保护,又提示账号有安全风险,要扫描登录或用手机qq登录。就接着用手机qq登录,手机登录时,先是要求验证码(拼图验证码+按顺序点字的验证方式),接着又要登录验证(扫码验证或辅助资料验证),然后手机号码验证、输入实名信息,最后是提供之前用过的密码,关键是密码一直都没有换过啊!!折腾了多半天,最后放弃(懒得找客服和qq好友),想着再申请个新的qq号测试算了,结果申请界面提示我操作太频繁,郁闷!
在这里插入图片描述
  新申请了QQ账号后,进入邮箱,其界面与用旧账号登录的qq邮箱界面风格差别较大,在邮箱地址上点击后弹出下面的界面,点击设置链接。
在这里插入图片描述
  在邮箱设置->常规中的第三方服务中可以设置IMAP/SMTP服务(POP3服务好像就没有了),默认是关闭状态。点击开启服务,结果提示新邮箱账号要2周后才能开启IMAP/SMTP服务,于是放弃测试qq邮箱。
在这里插入图片描述
在这里插入图片描述

  转而测试163邮箱,在邮箱设置的POP3/SMTP/IMAP中开启IMAP/SMPT服务(默认应该就是开启的),开启时需要手机扫码向特定号码发信息,然后邮箱会提供授权密码(该密码仅会出现1次),上面测试代码就是使用该授权密码读取邮箱信息。
在这里插入图片描述
  测试上述代码,结果运行时报下列错误,百度错误信息,有说要在调用search函数前要调用select函数的,也有说用网易放出来的授权接口来进行解除限制,测试了部分解决建议,但没有起作用。
在这里插入图片描述
  通过测试,发现上述代码中能调的、不报错的只有list函数,于是精简测试代码,改成了下面的样子,这样程序可以正常运行,不过也仅限于连接、登录、列出、退出等操作,程序运行效果见下图。

# coding=utf-8

import imaplib

connection=imaplib.IMAP4_SSL('imap.163.com',993)
username='XXXXXXXX@163.com'
password='XXXXXXXX'

try:
    connection.login(username,password)    
except Exception as err:
    print('登录失败:',err)

res,data=connection.list()
print(res,data)
print(data[0])
connection.logout()

在这里插入图片描述

  后续会试试申请其它邮箱进行测试,但愿别这么麻烦!

参考文献
[1]https://docs.python.org/zh-cn/3/library/imaplib.html
[2]Python从菜鸟到高手

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值