python-发送邮件
这里事清安,我们跑完自动化脚本后,是不是想一气呵成把邮件一起发了?完成一次华丽的真自动化。
zmail操作
1. 导包 import zmail
2. 邮件内容,包含:主题(subject)、正文(content_text)、附件(attachments)
3. 发件人信息,包含:发件人账号,密码(授权码)
4. 发送邮件,包含:收件人地址,邮件内容
5. 群发邮件,收件人地址写在一个列表中,多个收件人以逗号分隔开
纯文字发送:
import zmail
#邮件内容,主题subject内容content_text,不能随意定义
msg = {
'subject':'邮件主题:小姐姐的信息',
'content_text':'身高172,大长腿,颜值高。。。'
}
#发件人,授权码
sender = ('123456798@qq.com','dfddfdfdfggrgrgc')
#收件人
reciver = '123456789@163.com'
#群发形式,这里列表不支持改成元组
#reciver = ['123465789@163.com','12345678@qq.com']
# 登录,索引值账号、密码
sender = zmail.server(sender[0],sender[1])#(*sender)也叫解包,自动填充
# 发送邮件,发动到哪个邮件,以及发送内容
sender.send_mail(reciver,msg)
复制代码
需要值得注意的是,这里的操作很简单,msg是一个字典变量,我们自己设定的,但是 里面的键是不能够改变的,是这个库内部规定的,其他的变量名可以随意的取,这里的sender是你的账号加上授权码。
也可以进行群发哦,但是需要是列表形式的。
这里说一下授权码怎么弄,在你邮件中,找到设置按钮,点击后进入设置界面,再找到你的账户按钮,点击进入,一直下拉
把这些服务全部打开:
点击生成授权码,按照操作来,发送短信,点击我已发送,就可以得到一串授权码, 记得自己收好哦。
html格式发送:
我们还可以发送HTML形式的文档出去 ,所以这波操作也是一个关键,后续自动化发送邮件我们需要将报告进行压缩,如何以zip或者rar又或者以其他形式的方式进行发送。
# 方法一
comtent = '''
html内容
'''
# 方法二
with open('email_msg.html','r',encoding='utf-8') as e:
comtent = e.read()
#这里如果正文跟html都写,会被html格式内容跟所覆盖掉
msg = {
'subject':'邮件主题:自动化测试报告',
'content_html':comtent,
}
#发件人
sender = ('123456798@qq.com','dfddfdfdfggrgrgc')
#收件人
reciver = '123456789@163.com'
#群发形式,这里列表不支持改成元组
#reciver = ['123465789@163.com','12345678@qq.com']
# 登录,索引值账号、密码
sender = zmail.server(sender[0],sender[1])#(*sender)也叫解包,自动填充
# 发送邮件,发动到哪个邮件,以及发送内容
sender.send_mail(reciver,msg)
复制代码
这里清安给出了两种方法,第一种呢比较lw,还是用第二种吧,html形式的就不是很适合发送不得了的图片了,但是还有一种你绝对的想知道,那就是附件形式去发送,简单快捷,发完还可以清理磁盘,哈哈哈哈!!!
附件格式发送:
直接上代码:
#发送附件,附件(attachments),多个附件的话用列表形式
msg = {
'subject':'邮件主题:你好',
'content_text':'附件',
'attachments':'1.png'
}
#'attachments':['1.png','test.make.txt']
#发件人
sender = ('123456798@qq.com','dfddfdfdfggrgrgc')
#收件人
reciver = '123456789@163.com'
#群发形式,这里列表不支持改成元组
#reciver = ['123465789@163.com','12345678@qq.com']
# 登录,索引值账号、密码
sender = zmail.server(sende[0],sende[1])#(*sender)也叫解包,自动填充
# 发送邮件,发动到哪个邮件,以及发送内容
sender.send_mail(reciver,msg)
复制代码
封装
我们不想每次都来重新写这些代码,那么我们就封装一下,需要的时候直接导入类调用使用就好了。
class Email_file():
# 主题,正文,附件,初始化对应的属性,床送多个附件就必须要*attachments
def __init__(self,subject,content_text,attachments):
self.subject = subject
self.content_text = content_text
self.attachments = attachments
#传送多个附件,转成列表形式
#self.attachments = list(attachments)
self.msg= {
'subject':self.subject,
'content_text':self.content_text,
'attachments':self.attachments,
}
def send_email(self,*sender_more,**romve_more):
#单个发件人,多个发件人
#self.sender = '1104282189@qq.com'
self.sender = sender_more
#收件人
# self.remove = '1104282189@qq.com'
#多个收件人
self.list_remove = []
#把字典值存入列表中
for i in romve_more.values():
self.list_remove.append(i)
#登录操作
self.get_email = zmail.server(*self.sender)
#发送
self.get_email.send_mail(self.sender,self.msg)
m = Email_file('邮件主题:你好','邮件正文内容:你好!','email_msg.html')
#传值,多个发件人,多个收件人
m.send_email('123456789@qq.com','qokdghjdgjdkejye',user1='123456789@163.com',user2='123456789@qq.com')
复制代码
最后说明一下,邮件发送需要根据自身框架的实际情况进行变更,所以,这里的只是以介绍的形式告诉你,可以这样做。需要灵活运用,善于百度!
- 点赞
- 收藏
- 关注作者
评论(0)