支持IMAP协议的邮件收取,底部有完整代码,笔者已测试对接QQ邮箱和163邮箱
Python版本:3.9.6
ide:PyCharm 2021.1.3
前段时间要用到一个邮件附件下载的功能,当时任务没有派到我这里,这两天想自己写一个邮件读取的功能练练手,后续有机会完善下POP3协议收取和STMP协议发送的功能。
话不多说,直接开干。由于大部分都是解释文本的内容,就不细述开发过程,主要把遇到的几个问题描述下:
1、需要获取使用的邮箱服务器的配置地址和端口,比如QQ邮箱。
2、现在第三方客户端登录邮箱基本都是使用授权码而不是密码,授权码的获取方式可以百度,使用密码时QQ邮箱和163邮箱都会报错,如下图。
3、对接163邮箱,需要在连接之前上传配置,否则会报错,这个问题找了好久才找到答案。参考http://blog.csdn.net/jony_online/article/details/108638571
4、解析正文时,一般有两种内容类型,分别是text/html、text/plain,推荐使用纯文本text/plain,text/html格式不固定。
5、163邮箱需要注意下设置,如果IMAP服务没有开启是不能正常使用的,如果看到明明收件箱有邮件却读取不到,有可能是没有收取全部邮件,默认是收取最近30天。
完整代码如下:
"""
function: IMAP收取邮件
detail: 支持最后一封邮件的文本打印以及所有附件的下载
author: w.royee
date: 2021-08-21
"""
import email
import email.header
import imaplib
from bs4 import BeautifulSoup
class IMAP:
def __init__(self):
# self.user_id = 'XXXX@qq.com' # QQ邮箱地址
# self.password =