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

Python快速上手系列--邮件发送--详解篇

本章就来一起学习一下跑完自动化脚本后如何自动的发送邮件到指定的邮箱。

zmail操作:

1. 导包 import zmail
2. 邮件内容,包含:主题(subject)、正文(content_text)、附件(attachments)
3. 发件人信息,包含:发件人账号,密码(授权码)
4. 发送邮件,包含:收件人地址,邮件内容
5. 群发邮件,收件人地址写在一个列表中,多个收件人以逗号分隔开

纯文字发送:

需要值得注意的是,这里的操作很简单,msg是一个字典变量,我们自己设定的,但是 里面的键是不能够改变的,是这个库内部规定的,其他的变量名可以随意的取,这里的sender是你的账号加上授权码。

也可以进行群发哦,但是需要是列表形式的。

这里说一下授权码怎么弄,在你邮件中,找到设置按钮,点击后进入设置界面,再找到你的账户按钮,点击进入,一直下拉:

把这些服务全部打开:

点击生成授权码,按照操作来,发送短信,点击我已发送,就可以得到一串授权码, 记得自己收好哦。

html格式发送:

我们还可以发送HTML形式的文档出去 ,所以这波操作也是一个关键,后续自动化发送邮件我们需要将报告进行压缩,如何以zip或者rar又或者以其他形式的方式进行发送。

这里给出了两种方法,第一种呢比较拉跨,还是用第二种吧,html形式的就不是很适合发送不得了的图片了,但是我们可以以附件形式去发送。

附件格式发送:

直接上代码:

封装

第一种

我们不想每次都来重新写这些代码,那么我们就封装一下,需要的时候直接导入类调用使用就好了。

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')

第二种:

import yagmail

import time

from until_config.readconfig import readConfig

import shutil

class Mail:

"""

邮件相关类

"""

def log(self, content):

now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

print(f'{now_time}: {content}')

def sendmail(self, receivers, title, msg, attachment):

"""

发送邮件

Arguments:

msg {str} -- 邮件正文

title {str} -- 邮件标题

receivers {list} -- 邮件发送者,数组

attachment -- 测试报告附件

"""

yag = yagmail.SMTP(

host='smtp.qq.com', user='自己的邮箱QQ',

password='邮箱密匙,需要在自己邮箱看', smtp_ssl=True

)

try:

yag.send(receivers, title, msg, attachment)

self.log("邮件发送成功")

except BaseException as e:

print(e)

self.log("Error: 无法发送邮件")

def Filezip(self):

zipfile = readConfig.Base_report

shutil.make_archive(readConfig.Base_report,"zip",zipfile)

# if __name__ == '__main__':

#

# # 定义邮件参数内容

# msg = '测试报告已生成,请注意查收' # 邮件正文

# title = '《测试报告》' # 邮件标题

# receivers = ['1111111'] # 邮件接收者

# attachment = [readConfig.Base_report]

#

# # 通过邮件发送最新的报告

# Mail().sendmail(receivers, title, msg, attachment)

这里写了压缩的测试报告的步骤,也就是Filezip方法中。第二种方法也是另一个邮件发送的模块,做为了解,也可以直接拿去使用。此外,这里的readConfig是我的配置文件,也就是压缩的路径。

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

http://www.lryc.cn/news/11343.html

相关文章:

  • 【Bluetooth开发】蓝牙开发入门
  • 07:进阶篇 - 在程序中嵌入 CTK Plugin Framework
  • 快速低成本动画视频课
  • 大数据平台测试-软件测试常见面试回答(持续更新)
  • 链表学习之反转链表
  • ONNXRUNTUIME实例分割网络说明
  • 几行代码,就写完懒加载啦?
  • PyTorch常用的损失函数(ChatGPT)
  • LeetCode——1237. 找出给定方程的正整数解
  • 系统编程中的进程的概念No.3【进程状态】
  • 推荐 3 款 Golang 语义化版本库
  • Windows平台使用gdb连接qemu虚拟机上的系统
  • 【博客624】MAC地址表、ARP表、路由表(RIB表)、转发表(FIB表)
  • 【蓝桥日记⑤】2014第五届省赛(软件类)JavaA组❆答案解析
  • Leetcode.1139 最大的以 1 为边界的正方形
  • Bing+ChatGPT 对传统搜索引擎的降维打击
  • 【JS】数组常用方法总结-功能、参数、返回值
  • pytest 单元测试前后置处理
  • 汽车安全硬件扩展 AUTOSAR SHE SecureHardwareExtensions
  • 2023年美国大学生数学建模C题:预测Wordle结果建模详解+模型代码
  • 5、HAL库驱动W25Qxx
  • git rebase 洐合(变基)
  • Kubernetes 1.18学习笔记
  • AJAX技术
  • 华为OD机试 - 最大排列(JS)
  • Prometheus Docker安装及监控自身
  • 点云处理PCL常用函数与工具
  • FyListen 在 MVP 架构中的内存优化表现
  • Qt代码单元测试以及报告生成
  • vscode构建Vue3.0项目(vite,vue-cli)