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()
原文地址:https://www.cnblogs.com/pywen/p/14245436.html