软件测试|教你用Python给领导发邮件

简介: 软件测试|教你用Python给领导发邮件

前言

我有个朋友是一个品牌的县级代理,免不了要给自己的上级代理汇报自己区域的销售情况,他不只一次给我抱怨,发送报表的次数太多,领导也太多,有时候一天发邮件就要占用自己不少的时间,问我有没有什么办法能够解放他。

作为他的好基友,我必须帮帮他,刚好我们Python能够实现自动化的发送邮件,非常符合他的需求,脚本写好,他只需要准备好报表,动动手指就可以完成发送了。

邮箱设置

要实现自动化发送邮件,我们首先要对自己的邮箱进行设置,开启SMTP服务,具体步骤如下:

  1. 登录邮箱之后,点击设置

在这里插入图片描述

  1. 点击账户,开启POP3/SMTP服务,该服务是默认关闭的

在这里插入图片描述

  1. 生成授权码

开启SMTP服务之后,必须要点击生成授权码,该授权码才是使用Python发送邮件时的真正密码。

在这里插入图片描述
发送邮件之后,点击我已发送,即可展示授权码,可以将授权码保存下来。

在这里插入图片描述

模块介绍

Python自动化发邮件使用到了smtplib和email模块,这两个模块都是Python的内置模块,无需安装可以直接导入。其中,smtplib模块主要负责发送邮件,email模块主要负责构造邮件。

  • smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。
  • email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。
  1. smtplib模块

smtplib.SMTP() :实例化SMTP()

login(user,password):

  • user:登录邮箱的用户名
  • password:登录邮箱的密码,即上方生成的授权码

sendmail(from_addr,to_addrs,msg,…):

  • from_addr:邮件发送者地址
  • to_addrs:邮件接收者地址。字符串列表[‘接收地址1’,‘接收地址2’,‘接收地址3’,…]或’接收地址’
  • msg:发送消息:邮件内容。一般是msg.as_string():as_string()是将msg(MIMEText对象或者MIMEMultipart对象)变为str。

quit():用于结束SMTP会话。

  1. email模块

email模块下有mime包,mime英文全称为“Multipurpose Internet Mail Extensions”,即多用途互联网邮件扩展,是目前互联网电子邮件普遍遵循的邮件技术规范。

我们常用到的有,text,image,multipart三个模块。

导入方式如下:

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

实现邮件发送

完成上述设置,导入模块之后,我们可以开始编写实现自动化发送邮件的代码了,我们先来实现一下纯文字版的邮件发送。代码如下:

from smtplib import SMTP_SSL
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

# smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。
# email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。


host_server = 'smtp.qq.com'  #qq邮箱smtp服务器
sender_qq = 'xxxxxxxxxx@qq.com' #发件人邮箱
pwd = 'xxxxxxxxxxxx'
receiver = ['xxxxxxxxxx@163.com' ]#收件人邮箱

mail_title = 'theshy' #邮件标题
mail_content = "theshy是英雄联盟历史第一上单" #邮件正文内容
# 初始化一个邮件主体
msg = MIMEMultipart()
msg["Subject"] = Header(mail_title,'utf-8')
msg["From"] = sender_qq
# msg["To"] = Header("测试邮箱",'utf-8')
msg['To'] = ";".join(receiver)
# 邮件正文内容
msg.attach(MIMEText(mail_content,'plain','utf-8'))



smtp = SMTP_SSL(host_server) # ssl登录

# login(user,password):
# user:登录邮箱的用户名。
# password:登录邮箱的密码,像笔者用的是QQ邮箱,QQ邮箱一般是网页版,需要用到客户端密码,需要在网页版的QQ邮箱中生成授权码,该授权码即为自动发送邮件的密码。
smtp.login(sender_qq,pwd)

# sendmail(from_addr,to_addrs,msg,...):
# from_addr:邮件发送者地址
# to_addrs:邮件接收者地址。字符串列表['接收地址1','接收地址2','接收地址3',...]或'接收地址'
# msg:发送消息:邮件内容。一般是msg.as_string():as_string()是将msg(MIMEText对象或者MIMEMultipart对象)变为str。
smtp.sendmail(sender_qq,receiver,msg.as_string())

# quit():用于结束SMTP会话。
smtp.quit()

收到的邮件如下图所示:

在这里插入图片描述

实现带附件的邮件发送

我朋友想要发送的邮件肯定不是纯文字版的邮件,而是需要加上Excel文件或者图片的带附件的邮件,实现该需求的代码如下:

import smtplib
import string
from smtplib import SMTP_SSL
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.application import MIMEApplication # 用于添加附件


host_server = 'smtp.qq.com'  #qq邮箱smtp服务器
sender_qq = 'xxxxxxx@qq.com' #发件人邮箱
pwd = 'xxxxxxxxxx'
receiver = 'xxxxxxxxxxx@163.com'
mail_title = '2023年2月月度销售报表' #邮件标题

#邮件正文内容
mail_content = "您好,这是xx地区品牌2023年2月月度销售报表,报表见附件,请您查阅"

msg = MIMEMultipart()
msg["Subject"] = Header(mail_title,'utf-8')
msg["From"] = sender_qq
# msg["To"] = Header("测试邮箱","utf-8")

msg.attach(MIMEText(mail_content,'plain','utf-8'))
attachment = MIMEApplication(open('2023年2月月度销售报表.xlsx','rb').read())
attachment["Content-Type"] = 'application/octet-stream'
# 给附件重命名
basename = "2023年2月月度销售报表.xlsx"
attachment.add_header('Content-Dispositon','attachment',filename=('utf-8', '', basename))#注意:此处basename要转换为gbk编码,否则中文会有乱码。
msg.attach(attachment)


try:
    smtp = SMTP_SSL(host_server) # ssl登录连接到邮件服务器
    smtp.set_debuglevel(1) # 0是关闭,1是开启debug
    smtp.ehlo(host_server) # 跟服务器打招呼,告诉它我们准备连接,最好加上这行代码
    smtp.login(sender_qq,pwd)
    smtp.sendmail(sender_qq,receiver,msg.as_string())
    smtp.quit()
    print("邮件发送成功")
except smtplib.SMTPException:
    print("无法发送邮件")

收到的邮件如下图所示:
在这里插入图片描述

总结

本文主要讲解了使用Python实现自动发送邮件的功能,使用Python自动发送邮件可以提升我们的工作效率,减少我们的重复工作,希望这篇文章能够帮到大家!

相关文章
|
1月前
|
存储 安全 网络安全
手把手教你使用Python轻松搞定发邮件
手把手教你使用Python轻松搞定发邮件
47 0
|
1月前
|
Python
Python中 If语句条件测试
Python中 If语句条件测试
21 1
|
3月前
|
数据可视化 测试技术 持续交付
自动化测试神器:Python之Pytest库入门使用
自动化测试神器:Python之Pytest库入门使用
100 4
|
3月前
|
Python
|
3月前
|
SQL 存储 数据库
Python 的安全性和测试:什么是 SQL 注入攻击?如何防范 SQL 注入?
Python 的安全性和测试:什么是 SQL 注入攻击?如何防范 SQL 注入?
|
13天前
|
Web App开发 测试技术 网络安全
|
17天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
【4月更文挑战第9天】本文探讨了Python在自动化测试中的应用,强调其作为热门选择的原因。Python拥有丰富的测试框架(如unittest、pytest、nose)以支持自动化测试,简化测试用例的编写与维护。示例展示了使用unittest进行单元测试的基本步骤。此外,Python还适用于集成测试、系统测试等,提供模拟外部系统行为的工具。在脚本编写实践中,Python的灵活语法和强大库(如os、shutil、sqlite3、json)助力执行复杂测试任务。同时,Python支持并发、分布式执行及与Jenkins、Travis CI等持续集成工具的集成,提升测试效率和质量。
|
20天前
|
监控 物联网 Linux
python测试串口最大通信速率
【4月更文挑战第5天】
|
21天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
44 6
|
1月前
|
人工智能 搜索推荐 算法
使用Python自动发邮件提醒你周末吃啥
在快节奏的现代生活中,周末往往是人们放松身心、享受美食的宝贵时光。然而,面对琳琅满目的餐饮选择,很多人常常陷入“吃什么”的纠结中。为了解决这一问题,我们可以利用Python编写一个自动化脚本,每周自动发送邮件提醒我们周末的餐饮选择
14 0