Python实战技巧(12)一个非常好用收发邮件、解析邮件的库caterpillar_mail

Python实战技巧(1)Python字典类型数据如何递归地通过点‘.’的方式访问

Python实战技巧(2)Python的pdb调试代码方法详解

Python实战技巧(3)多版本兼容安装部署(py27,py34,py35,py36,py37,py38,py39)

Python实战技巧(4)正式在pypi网站发布包的流程详解

Python实战技巧(5)Python版本兼容性测试工具tox实战详解

Python实战技巧(6)Miniconda+Pipenv安装部署开发环境实战详解

Python实战技巧(7)Pycharm如何远程调试远程执行

Python实战技巧(8)Python调用C语言

Python实战技巧(9)Python发送邮件

Python实战技巧(10)Python解析邮件

Python实战技巧(11)使用python收发邮件时需要的邮箱授权码如何获取

Python实战技巧(12)一个非常好用收发邮件、解析邮件的库caterpillar_mail

一、安装

pip install -U caterpillar_mail

caterpillar_mail 的源码地址

二、发送邮件

2.1、最简单的方式(已实现163,126,qq,yeah.net类型的邮箱)

如下,除了导入语句,两行代码即可发送邮件,邮箱授权码获取参考 Python实战技巧(11)使用python收发邮件时需要的邮箱授权码如何获取

from caterpillar_mail import Email

# 初始化对象,初始化参数为发件箱及授权码
email=Email("[email protected]","LRRDUxxxxEMLK")  
# 发送邮件,第一个参数为收件人地址,第二个邮件标题,第三个标题为邮件内容
email.send("[email protected]","发送邮件测试标题","你好啊\n哈哈哈\n我是用来测试邮件的!") 

如果收件人为多个时,只需要使用逗号分隔即可,如下:

from caterpillar_mail import Email

# 初始化对象,初始化参数为发件箱及授权码
email=Email("[email protected]","LRRDUxxxxEMLK")  
# 发送邮件,第一个参数为收件人地址,第二个邮件标题,第三个标题为邮件内容
email.send("[email protected],[email protected]","发送邮件测试标题","你好啊\n哈哈哈\n我是用来测试邮件的!") 
2.2 指定邮件服务器地址的方式(通用方式)
from caterpillar_mail import SendEmail

send_email = SendEmail("smtp.163.com")   # 指定服务器地址,比如这里指定163的服务器
send_email.From = "[email protected]"
send_email.To = ["[email protected]"]  # 收件人为列表的格式
send_email.password = "LRRDUVxxxNYHEMLK"    # 授权码
send_email.subject = "测试邮件标题"     # 邮件标题
send_email.context = "测试邮件内容\n你好啊,哈哈哈\n邮件结束"    # 邮件内容
send_email.send()

三、解析邮件

3.1、最简单的方式(查看一封邮件)

(1)获取最新的邮件并解析

from caterpillar_mail import Email

email=Email("[email protected]","XTSDDNHNDTVDZBIO")
obj = email.get_latest_email()
print(obj.from_name)   # 发件人名字
print(obj.from_addr)   # 发件人邮箱
print(obj.to_name)     # 收件人名字
print(obj.to_addr)     # 收件人邮箱
print(obj.date)        # 邮件时间
print(obj.subject)     # 邮件标题
print(obj.context)     # 邮件内容

打印结果如下:
在这里插入图片描述
(2)通过邮件标题过滤,查询符合过滤条件的最新的邮件

from caterpillar_mail import Email

email=Email("[email protected]","XTSDDNHNDTVDZBIO")
obj = email.get_latest_email(subject="测试邮件收发")
print(obj.from_name)   # 发件人名字
print(obj.from_addr)   # 发件人邮箱
print(obj.to_name)     # 收件人名字
print(obj.to_addr)     # 收件人邮箱
print(obj.date)        # 邮件时间
print(obj.subject)     # 邮件标题
print(obj.context)     # 邮件内容

打印结果如下:
在这里插入图片描述
(3)通过发件人过滤,查询复核过滤条件的最新的邮件

from caterpillar_mail import Email

email=Email("[email protected]","XTSDDNHNDTVDZBIO")
obj = email.get_latest_email(from_addr="[email protected]")
print(obj.from_name)   # 发件人名字
print(obj.from_addr)   # 发件人邮箱
print(obj.to_name)     # 收件人名字
print(obj.to_addr)     # 收件人邮箱
print(obj.date)        # 邮件时间
print(obj.subject)     # 邮件标题
print(obj.context)     # 邮件内容

打印结果如下:
在这里插入图片描述
(4)通过一个收件人过滤,查询符合条件的最新的邮件

from caterpillar_mail import Email

email=Email("[email protected]","XTSDDNHNDTVDZBIO")
obj = email.get_latest_email(to_addr="[email protected]")
print(obj.from_name)   # 发件人名字
print(obj.from_addr)   # 发件人邮箱
print(obj.to_name)     # 收件人名字
print(obj.to_addr)     # 收件人邮箱
print(obj.date)        # 邮件时间
print(obj.subject)     # 邮件标题
print(obj.context)     # 邮件内容

打印结果如下:
在这里插入图片描述
(5)subject,from_addr,to_addr 三个参数均支持正则表达式,比如发件人使用正则过滤

from caterpillar_mail import Email

email=Email("[email protected]","XTSDDNHNDTVDZBIO")
obj = email.get_latest_email(from_addr="\d{9}")
print(obj.from_name)   # 发件人名字
print(obj.from_addr)   # 发件人邮箱
print(obj.to_name)     # 收件人名字
print(obj.to_addr)     # 收件人邮箱
print(obj.date)        # 邮件时间
print(obj.subject)     # 邮件标题
print(obj.context)     # 邮件内容

打印结果如下:
在这里插入图片描述

上述几种方法未实现所有类型的邮箱,目前只实现了部分邮箱,如果发送邮件类型未在上述之列,则一种解决方式是到 caterpillar_mail源码 提交issue,然后等待,另外一种解决方案就是使用下述方式自行指定邮箱服务器的方式

3.3、自指定邮箱服务器接收邮件并解析(通用方式)
from caterpillar_mail import ReadEmail
read_email = ReadEmail("pop.163.com")    # 163邮箱收件箱服务器地址
read_email.login("[email protected]", "LRRDUxxxxxYHEMLK")
emails = read_email.get_latest_n_email(n=1)   # emails是一个列表,返回最新的n封邮件,每个元素即为一个邮件对象
for obj in emails:
    print(obj.from_name)   # 发件人名字
    print(obj.from_addr)   # 发件人邮箱
    print(obj.to_name)     # 收件人名字
    print(obj.to_addr)     # 收件人邮箱
    print(obj.date)        # 邮件时间
    print(obj.subject)     # 邮件标题
    print(obj.context)     # 邮件内容

打印结果如下:
在这里插入图片描述

caterpillar_mail 发布记录

1.0.11 发布日期:2021-11-19

  • 增加对yeah.net邮箱的支持

1.0.10 发布日期:2021-11-19

  • 接收解析邮件提供更高层封装,两行代码即可接收解析邮件,同时发件人支持多人

1.0.9 发布日期:2021-11-18

  • 发送邮件提供更高层封装,两行代码即可发送邮件,同时收件人支持多人

1.0.8 发布日期:2021-11-18

  • 增加QQ邮箱的发送和收取及解析操作

1.0.7 发布日期:2021-11-18

  • 格式化发布文档

1.0.6 发布日期:2021-11-18

  • 格式化发布文档

1.0.5 发布日期:2021-11-18

  • 增加126邮箱的读取和发送

1.0.4 发布日期:2021-11-18

  • 增加解析邮件内容

1.0.3 发布日期:2021-11-17

  • 更新说明文档格式

1.0.2 发布日期:2021-11-17

  • 更新说明文档为.rst格式

1.0.1 发布日期:2021-11-17

  • 发送邮件功能

猜你喜欢

转载自blog.csdn.net/redrose2100/article/details/121390011