怎样快速实现一个发送邮件的接口?flask_mail库30行代码,快速实现

news2024/9/21 14:42:57

需求

实现了一个根据部门批量获取自动化行覆盖率,并与指标做diff的脚本,怎么才能第一时间通知给对应的人呢?
最先想到的一定是邮件发送(后边我在自己项目中接入的是公司内部的一个类似钉钉的服务号)

因为原本项目是用的flask,所以采用了flask_mail去实现(目前写脚本用的比较多的是smtplib,连接smtp服务器,通过sendmail()方法去发送)

方案

1.flask_mail听名字就知道是flask库中的一个包,所以需要导入flask,生成app,通过app.config去配置邮件发送服务所需参数

2.定义邮件的主题、内容、接收人

3.通过mail.send(xx)方法去发送邮件

邮箱配置(163为例)

1.开启pop3/smtpfwu
在这里插入图片描述

2.生成一个授权密码
在这里插入图片描述

具体代码实现

注意:邮箱账号、授权密码填自己的

from flask import Flask,request
from flask_mail import Mail, Message

app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.163.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = 'xxxxxx@163.com'
app.config['MAIL_PASSWORD'] = 'FELYYxxxxxx'
app.config['MAIL_DEFAULT_SENDER'] = 'xxxxxx@163.com'

mail = Mail(app)


@app.route('/sendMsg', methods=['POST'])
def send_msg():
    # 接收请求参数
    data = request.get_json()
    subject = data.get('subject')
    body = data.get('body')
    receivers = data.get('receivers')
    # 创建 Message 对象
    msg = Message(subject, recipients=receivers)

    # 设置邮件内容
    # msg.body = 'This is a test email sent from mengtu'
    msg.html = body

    # 发送邮件
    try:
        mail.send(msg)
        return {"code": 0, "msg": "邮件发送成功"}
    except Exception as e:
        return {"code": 0, "msg": str(e)}


if __name__ == '__main__':
    app.run(debug=True)

通过postman调用发送短信测试

注意:邮箱地址替换成自己的
在这里插入图片描述

网易邮箱检查是否收到邮件

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/802376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DRUPAL 8.x远程代码执行漏洞(CVE-2018-7600)

事件背景 框架漏洞收集 CVE-2018-7600有两个POC分别是7和8的,本文仅研究8版本的POC,与其它的文章不同的事,本文我将数据流向调试并记录下来了 漏洞说明 1. 漏洞原理:Drupal对表单请求内容未做严格过滤,因此&#x…

900就能上8000MHz的DDR5内存,光威神策做到了

这是一款定位于高端国产DDR5电竞游戏内存条的产品,而且是来自国产品牌,频率可以达到8000MHz,设计也是相当惊艳,重点在于它的价格是真的香,有需要的朋友可以冲了。 光威近期发布了一款神策系列DDR5内存条,相…

【腾讯云 Cloud Studio 实战训练营】基于Cloud Studio完成简易通讯录

目录 🔆Cloud Studio 简介 操作步骤 1.登录 2.创建工作空间 3.初始界面 4.开发空间 5.保存自定义模板 🔆简易通讯录 1.实验要求 2.操作环境 3.源代码介绍 3.1 定义通讯录类 3.2 定义通讯录列表 3.3 添加联系人功能 3.4 修改联系人 3.5 …

Echarts 柱状图显示百分比

以下是生成的 option option {yAxis: { name: 金额(元), type: value },xAxis: { type: category },legend: {},series: [{stack: x,name: 早餐,label: {normal: {show: true,position: insideRight,// 格式化显示formatter: function (params) {let …

清楚知道谁在划水?伙伴云一招搞定任务交办

伙伴云任务交办让每个职场人都拥有专属的事务汇集地, 让老板一张图把控全局,运筹帷幄, 让员工每天的工作井然有序,让每件事的进展都有始有终、形成闭环。一起来看看吧! 01企业内部任务管理的重要性 对于一家公司或一…

Java泛型的简单认识

泛型的认识 自定义泛型,定义了String类型,随后这个泛型就是String类型 于是他的方法都是字符串的类型 泛型接口 泛型方法 所有车可以进行比赛,定义了一个BMW和BENZ两个车类,都继承car,当使用泛型的 如果你顶一个狗对象…

Centos7 安装tomcat9

去官网下载 数据包 ps: wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.78/bin/apache-tomcat-9.0.78.tar.gz检查Java环境 [tomcatlocalhost bin]$ java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java H…

品牌渠道治理的有效方法

什么是品牌渠道,即品牌的销售渠道,围绕销售渠道做的治理工作,根本上是对低价、窜货的治理,当渠道中存在低价问题,那不管是对经销商还是非授权店铺,都会有不好的影响,经销商会跟价,非…

派森编程软件python好学吗,派森语言python干什么的

大家好,小编来为大家解答以下问题,派森编程软件python有什么用,派森编程软件python好学吗,现在让我们一起来看看吧! 1、python真的值得学吗? 不建议学python的原因: 1、语言性能差 对于C老手…

ACL访问控制列表(红茶三杯CCNA)

ACL的两大主要功能: 1. 流量控制 2. 匹配感兴趣流量ACL分为两类 Standard ACL-标准访问控制列表 只能根据源地址做过滤针对整个协议采取相关动作(允许或禁止) Extended ACL-扩展访问控制列表 能根据源、目的地址、端口号进行过滤能允许或拒…

实验四 汇编语言程序上机过程

五、实验步骤 1、用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为Hello.ASM。将源文件放到Dosbox挂载的目录下面。 图5-1为源码写注释并更改扩展名为Hello.ASM 2、用MASM对源文件进行汇编,产生Hello.OBJ文件和Hello.LST文件。若汇编时提示有错,用文字编辑工具修改源程…

YAPI接口自动鉴权功能部署详解

安装准备 以下操作,默认要求自己部署过yapi,最好是部署过yapi二次开发环境。 无论是选择在线安装或者是本地安装,都需要安装client工具。 1、yapi-cli:npm install yapi-cli –g, 2、安装后将文件夹nodejs/node_gl…

Nexpose v6.6.208 for Linux Windows - 漏洞扫描

Nexpose v6.6.208 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, Release Jul 27, 2023 请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.o…

10分钟带你实现一个Android自定义View:带动画的等级经验条

先展示一下静态效果图 介绍一下我们的实现流程: 首先整个经验条有一个圆角边框的背景打底;然后给经验条绘制一条轨道,让用户比较直观地看到总进度的长度;在轨道的上层绘制我们的渐变色经验条;在经验条的上层绘制等级…

vue新学习 02 vue命令v-model,数据代理(作用域和作用域链),事件,监听,渲染,计算属性(也就是把操作属性的语句放到vue实例中)

双向绑定用命令v-model: v-bind的命令是单项去绑定data中的相关属性,此时的data是真正的data,并没有用变量声明的方式去接收vue实例对象,也就是例如用const vm new Vue({})。而是直接就采用了new Vue({})这…

6、Kubernetes核心技术 - Pod

目录 一、概述 二、Pod机制 2.1、共享网络 2.2、共享存储 三、Pod资源清单 四、 Pod 的分类 五、Pod阶段 六、Pod 镜像拉取策略 ImagePullBackOff 七、Pod 资源限制 八、容器重启策略 一、概述 Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。P…

oracle12c静默安装

目录 前言 安装配置步骤 关闭防火墙,禁止防火墙开机自启 关闭selinux yum安装必要安装包 内网环境下载依赖包的方式 创建用户和组 创建oinstall和dba组 创建oracle用户 设置oracle密码 查看创建结果 修改内核参数 使配置生效 修改用户及文件限制 改文件限制 修改用…

ol.Overlay+gif动画及隐藏问题

隐藏要使用css比较彻底,例如$("#markerLbs").hide()。 如果使用markerLbs.setVisible(false),当地图刷新后再次显示,可能我的用法不对,欢迎指教。 我的demo是一个gif动画,当zoom变化时控制gif显隐&#xf…

防汛备汛 | EasyV数字孪生可视化防汛应急解决方案护平安!

一、方案背景 汛期是指季节性降雨增多,河流湖泊水位上涨的时期。当前,我国正式进入“七下八上”防汛关键期,多地进入主汛期。入汛以来,我国经历了18次强降雨过程,21个省份271条河流发生超警以上洪水。其中南方地区受台…

Linux文件和目录的777、755、644权限解释

1.文件权限 在linux系统中,文件或目录的权限可以分为3种: r:4 读 w:2 写 x:1 执行(运行) -:对应数值0 数字 4 、2 和 1表示读、写、执行权限 rwx 4 2 1 7 (可读写运行) rw 4 2 6 (可读写不可运行) rx …