需求
实现了一个根据部门批量获取自动化行覆盖率,并与指标做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调用发送短信测试
注意:邮箱地址替换成自己的