当前位置: 首页 > news >正文

python的邮件发送及配置

SMTPLIB 服务配置

自动化邮件发送的形式来实现邮件的自动发送,是自动化测试过程中对于测试结果的产出方式。一定要将邮件的相关配置信息保存到代码之中。

不同的邮箱所需要的配置内容会有区别。使用时可以去网上查找相关的配置信息。

qq邮箱需要在设置中开启smtp服务并获取授权码,例如:josdonbuhfgaeajj

保存授权码到本地,以便后续使用

各类邮件发送

文本邮件发送

发送纯文本的邮件信息,不包含有任何其他内容

#  定义邮箱的相关信息import smtplibfrom email.header import Headerfrom email.mime.text import MIMEText​sender = '2217486972@qq.com'receiver = 'fsd9653@163.com'pass_code = 'josdonbuhfgaeajj'​# 连接邮箱服务器conn = smtplib.SMTP_SSL('smtp.qq.com', 465)  # qq邮箱的SMTP服务器地址和端口号​# 邮件正文content = '这是一封文本格式的测试邮件,希望你国庆快乐'​# 将正文放入邮件对象,plain表示文本格式cont = MIMEText(content, 'plain', 'utf-8')​# 定义邮件的发件人与收件人cont['from'] = sendercont['to'] = receiver# 定义邮件的标题cont['subject'] = Header('这是一封测试邮件', 'utf-8')​# 发送邮件conn.login(sender, pass_code)  # 登录邮箱conn.sendmail(sender, receiver, cont.as_string())  # 发送邮件# 关闭连接conn.close()print('邮件发送成功')

### 网页版邮件(HTML格式)

#  定义邮箱的相关信息import smtplibfrom email.header import Headerfrom email.mime.text import MIMEText​sender = '2211486979@qq.com'receiver = 'fdd92253@163.com'pass_code = 'josdonbuhfgaeajj'​# 连接邮箱服务器conn = smtplib.SMTP_SSL('smtp.qq.com', 465)  # qq邮箱的SMTP服务器地址和端口号​# 邮件正文content = '''<html><head><meta charset="utf-8"><title>这是一封测试邮件</title></head><body><h1>这是一封测试邮件</h1><p>这是一封测试邮件,希望你国庆快乐</p><a href="https://www.baidu.com">这是一个链接</a></body></html>'''​# 将正文放入邮件对象,html表示html格式cont = MIMEText(content, 'html', 'utf-8')​# 定义邮件的发件人与收件人cont['from'] = sendercont['to'] = receiver# 定义邮件的标题cont['subject'] = Header('这是一封测试邮件', 'utf-8')​# 发送邮件conn.login(sender, pass_code)  # 登录邮箱conn.sendmail(sender, receiver, cont.as_string())  # 发送邮件# 关闭连接conn.close()print('邮件发送成功')

带有附件的邮件

需要对附件部分进行额外的代码编写

#  定义邮箱的相关信息
import smtplib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMETextsender = '221748623279@qq.com'
receiver = 'fdd9623@163.com'
pass_code = 'josdonbuhfgaeajj'# 连接邮箱服务器
conn = smtplib.SMTP_SSL('smtp.qq.com', 465)  # qq邮箱的SMTP服务器地址和端口号# 发送带有附件的邮件text = '这是一封测试邮件,希望你国庆快乐'
cont = MIMEText(text, 'plain', 'utf-8')# 定义附件信息
# 添加附件
with open('./2.jpg', 'rb') as f:att = MIMEText(f.read(), 'base64', 'utf-8')att.add_header('Content-Type', 'octet-stream')
att.add_header('Content-Disposition', 'attachment', filename='2.jpg')# 将附件添加到邮件对象
email = MIMEMultipart()# 将附件添加进来
email.attach(att)
email.attach(cont)# 定义邮件的发件人与收件人
email['from'] = sender
email['to'] = receiver
email['subject'] = Header('这是一封测试邮件', 'utf-8')# 发送邮件
conn.login(sender, pass_code)
conn.sendmail(sender, receiver, email.as_string())
conn.quit()# 关闭连接
conn.close()

配置项设置

编写配置文件email_conf.ini:
 [Project_fdd]SENDER = 22174863279@qq.comRECEIVER = fdd922653@163.comPASS_CODE = josdonbuhfgaeajj

定义函数获取配置项里的信息,先读取试试,再封装成方法

"""init配置文件读取使用configparser模块读取配置文件"""​import configparserimport pathlib​​# filepath = './email_conf.ini'# # 读取配置文件# conf = configparser.ConfigParser()  # 实例化配置文件对象# conf.read(filepath, encoding='utf-8')  # 读取配置文件# # 获取配置文件中的内容,并将元组转换为字典# values = dict(conf.items('Project_fdd'))# print(values)## print(values['sender'])# print(values['receiver'])# print(values['pass_code'])​​#  定义一个函数,用于读取配置文件def read_conf(project_name):# 读取配置文件file = pathlib.Path(__file__).parents[0].resolve() / 'email_conf.ini'conf = configparser.ConfigParser()  # 实例化配置文件对象conf.read(file, encoding='utf-8')  # 读取配置文件# 获取配置文件中的内容,并将元组转换为字典values = dict(conf.items(project_name))return values最后再编写使用ini配置进行邮件发送的代码:#  定义邮箱的相关信息import smtplibfrom email.header import Headerfrom email.mime.text import MIMEText​from class10_email.email_read import read_conf​# sender = '2217486223979@qq.com'# receiver = 'fdd922653@163.com'# pass_code = 'josdonbuhfgaeajj'​data = read_conf('Project_fdd')​sender = data['sender']receiver = data['receiver']pass_code = data['pass_code']​# 连接邮箱服务器conn = smtplib.SMTP_SSL('smtp.qq.com', 465)  # qq邮箱的SMTP服务器地址和端口号​# 邮件正文content = '这是一封文本格式的测试邮件,基于ini文件配置的发送邮件,希望你国庆快乐'​# 将正文放入邮件对象,plain表示文本格式cont = MIMEText(content, 'plain', 'utf-8')​# 定义邮件的发件人与收件人cont['from'] = sendercont['to'] = receiver# 定义邮件的标题cont['subject'] = Header('这是一封测试邮件', 'utf-8')​# 发送邮件conn.login(sender, pass_code)  # 登录邮箱conn.sendmail(sender, receiver, cont.as_string())  # 发送邮件# 关闭连接conn.close()print('邮件发送成功')

多个接收的成员

smtp库默认无法直接给多人进行邮件发送,如果需要发送多人,需要转为list,sendmail方法是支持收件人为列表的

注意收件人cont['to'] = str(receiver) 这里一定要转成str类型,否则报错

 #  定义邮箱的相关信息import smtplibfrom email.header import Headerfrom email.mime.text import MIMEText​from class10_email.email_read import read_conf​# sender = '22174862979@qq.com'# receiver = 'fdd962253@163.com'# pass_code = 'josdonbuhfgaeajj'​data = read_conf('Project_fdd')​sender = data['sender']receiver = data['receiver'].split(',')  # 将字符串转换为列表pass_code = data['pass_code']​# 连接邮箱服务器conn = smtplib.SMTP_SSL('smtp.qq.com', 465)  # qq邮箱的SMTP服务器地址和端口号​# 邮件正文content = '这是一封文本格式的测试邮件,基于ini文件配置的发送邮件,希望你国庆快乐'​# 将正文放入邮件对象,plain表示文本格式cont = MIMEText(content, 'plain', 'utf-8')​# 定义邮件的发件人与收件人cont['from'] = sendercont['to'] = str(receiver)  # 这个只能是str而不能是list,多人时要转成str​cont['to'] = ','.join(receiver)  # 将列表转换为逗号分隔的字符串# 定义邮件的标题cont['subject'] = Header('这是一封测试邮件', 'utf-8')​# 发送邮件conn.login(sender, pass_code)  # 登录邮箱conn.sendmail(sender, receiver, cont.as_string())  # 发送邮件# 关闭连接conn.close()print('邮件发送成功')

http://www.xdnf.cn/news/1318393.html

相关文章:

  • 逆向Shell实战——红队技巧 vs 蓝队防御全攻略
  • Matlab数字信号处理——基于最小均方误差(MMSE)估计的自适应脉冲压缩算法复现
  • React 基础实战:从组件到案例全解析
  • Mysql笔记-错误条件\处理程序
  • 【Java后端】Spring Boot 集成 MyBatis 全攻略
  • 【前端基础】19、CSS的flex布局
  • 麒麟V10静默安装Oracle11g:lsnrctl、tnsping等文件大小为0的解决方案
  • 【编程实践】关于S3DIS数据集的问题
  • 官方正版在线安装office 365安装工具
  • react 错误边界
  • Linux系统分析 CPU 性能问题的工具汇总
  • STM32学习笔记13-通信协议I2CMPU6050
  • 海洋牧场助力可持续发展,保护海洋生态平衡
  • C语言学习笔记之文件操作
  • 基于Vue的个人博客网站的设计与实现/基于node.js的博客系统的设计与实现#express框架、vscode
  • 网络原理与编程实战:从 TCP/IP 到 HTTP/HTTPS
  • C++零拷贝网络编程实战:从理论到生产环境的性能优化之路
  • 01数据结构-插入排序
  • 如何让AI视频模型(如Veo)开口说中文?一个顶级提示词的深度拆解
  • RabbitMQ入门:生产者和消费者示例
  • 44.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成认证(三)
  • 一起Oracle 19c bug 导致的业务系统超时问题分析
  • 锂电池SOH预测 | Matlab基于KPCA-PLO-Transformer-LSTM的的锂电池健康状态估计(锂电池SOH预测),附锂电池最新文章汇集
  • Linux中聚合链路与软件网桥配置指南
  • java理解
  • 使用 Python 的 `cProfile` 分析函数执行时间
  • 如何做HTTP优化
  • 计算机毕设选题推荐-基于大数据的全面皮肤病症状数据可视化分析系统【Hadoop、spark、python】
  • 【LLM】文献阅读-ISOLATE GPT:基于大语言模型的执行隔离架构
  • 自然语言处理NLP---预训练模型与 BERT