python + zmail 邮件发送
zmail库 无须手动添加服务器地址、端口以及适合的协议,zmail会帮你自动完成。
一、优势
-
自动填充大多数导致服务端拒信的头信息
-
将一个字典映射为email,构造信件就像构造字典一样简单
-
自动寻找邮件服务商端口号地址,自动选择合适的协议(经过认证的)
-
只依赖于python3
二、支持的邮件服务商
封装代码如下:
import zmail
class Email:
def __init__(self, username="xxx@xxx.com", password="xxxx0", config="qq"):
"""
登录邮箱
:param username: 邮箱账号
:param password: 邮箱密码
:param config: 企业邮箱名称: 腾讯企业邮箱:qq 阿里企业邮箱:ai 网易企业邮箱:163 谷歌企业邮箱:google
"""
self.server = zmail.server(username=username, password=password, config=config)
def send_single(self, account, content):
"""
发送单人邮件
:param account: 邮箱账号
:param content: 邮件内容
:return:
"""
self.server.send_mail(recipients=account, mail=content)
def send_multiple(self, account: list, content):
"""
批量发送邮件
:param account: 邮箱地址 list类型
:param content: 邮件内容
:return:
"""
self.server.send_mail(recipients=account, mail=content)
def read_email(self):
""" 读取邮件 """
mail = self.server.get_latest() # 获取最新邮件
zmail.show(mail)
if __name__ == '__main__':
aa = Email()
account = ["976076733@qq.com", "976076731@qq.com"]
mail_conect = {
"subject": "python发送邮件啦", # 邮件内容标题
"content_text": "python课堂11111", # 邮件内容
"headers": rb"D:\python_35\ceshi.jpg", # 邮件附件
}
for i in range(5):
aa.send_single(account="895606xxx@qq.com", content=mail_conect)
aa.read_email()