python-发送邮件

举报
清安无别事 发表于 2022/01/22 14:14:31 2022/01/22
【摘要】 这里事清安,我们跑完自动化脚本后,是不是想一气呵成把邮件一起发了?完成一次华丽的真自动化。zmail操作   1. 导包 import zmail   2. 邮件内容,包含:主题(subject)、正文(content_text)、附件(attachments)   3. 发件人信息,包含:发件人账号,密码(授权码)   4. 发送邮件,包含:收件人地址,邮件内容   5. 群发邮件,收件人...

这里事清安,我们跑完自动化脚本后,是不是想一气呵成把邮件一起发了?完成一次华丽的真自动化。

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')
复制代码

        最后说明一下,邮件发送需要根据自身框架的实际情况进行变更,所以,这里的只是以介绍的形式告诉你,可以这样做。需要灵活运用,善于百度!


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。