一百零五:CMS系统之flask-mail使用和邮箱配置、发送邮件功能
安装:pip install flask-mail
官方文档:https://pythonhosted.org/Flask-Mail/
邮箱配置

MAIL_SERVER = 'smtp.qq.com' # 邮箱服务器地址
MAIL_PORT = 465 # 端口
MAIL_USE_TLS = True # 使用tls协议
MAIL_USERNAME = '1460@qq.com' # 邮箱
MAIL_PASSWORD = 'llahhie' # 邮箱授权码
MAIL_DEFAULT_SENDER = '14609@qq.com' # 默认发送者

from flask_sqlalchemy import SQLAlchemy
from flask_mail import Mail
db = SQLAlchemy()
mail = Mail()

发一封邮件测试一下


完成发送邮件功能
js

$(function () {
$('#captcha-btn').click(function (event) {
event.preventDefault();
var email = $('input[name="email"]').val();
console.log(email);
if(!email){
xtalert.alertInfoToast('请输入邮箱');
return;
}
http.get({
'url': '/cms/email_captcha/',
'data': {
'email': email
},
'success': function (data) {
if(data['code'] == 200){
xtalert.alertSuccessToast('邮件发送成功,请注意查收');
}else{
xtalert.alertInfo(data['message']);
}
},
'fail': function (error) {
xtalert.alertNetworkError();
}
});
});
});
引用

视图

@bp.route('/email_captcha/')
def email_captcha():
email = request.args.get('email')
if not email:
return restful.params_error('邮箱必填')
# 验证码
source = list(string.ascii_letters) # ['a-z','A-Z']
source.extend(map(lambda x: str(x), range(0, 10))) # ['a-z','A-Z', '0-9']
captcha = ''.join(random.sample(source, 6)) # 把随机取的6位列表转字符串当验证码
message = Message('CMS验证码', recipients=[email], body=f'验证码为:{captcha}')
try:
mail.send(message)
except:
return restful.server_error()
return restful.success()
触发


一百零五:CMS系统之flask-mail使用和邮箱配置、发送邮件功能的更多相关文章
- salesforce零基础学习(一百零五)Change Data Capture
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...
- 一百二十八:CMS系统之轮播图的编辑和删除功能
编辑 form,继承添加的form 视图 @bp.route('/ubanners/', methods=['POST'])@login_required@permission_required(CM ...
- 一百零五、SAP中ALV事件之十七,让ALV表格修改后保存到数据库
一.我们来到代码界面设置保存按钮的代码 二.i_grid_settings这个属性用来编辑单元格之后,返回给程序编辑后的值 三.我们双击点 'REUSE_ALV_GRID_DISPLAY',来到定义 ...
- Java开发笔记(一百零五)几种定时器线程池
前面介绍了普通线程池的用法,就大多数任务而言,它们对具体的执行时机并无特殊要求,最多是希望早点跑完早点出结果.不过对于需要定时执行的任务来说,它们要求在特定的时间点运行,并且往往不止运行一次,还要周期 ...
- 测开之路一百零五:bootstrap的两种引用方式
一:下载到本地引用: 3.3.7版本:https://getbootstrap.com/docs/3.3/getting-started/#download 下载后解压到本地项目中引用 第二种,cdn ...
- net开源cms系统
.net开源cms系统推荐 内容目录: 提起开源cms,大家第一想到的是php的cms,因为php开源的最早,也最为用户和站长们认可,随着各大cms系统的功能的不断完善和各式各样的开源cms的出现,. ...
- 基于jeesite的cms系统(一):开发环境搭建
基于jeesite的cms系统系列,是对基于jeesite进行二次开发的博客模块开发过程的总结.涉及入门安装,二次开发,部署等 一.概况: JeeSite 是一个 Java 企业级快速开发平台,基于经 ...
- 一个基于NodeJS开发的APP管理CMS系统
花了大概3周独立开发了一个基于NodeJS的CMS系统,用于公司APP的内容管理( **公司APP?广告放在最后 ^_^ ** ,管理员请理解~~~ )晚上看了部电影还不想睡,闲着也是闲着就作下小小总 ...
- JAVAEE——宜立方商城05:前台系统搭建、首页展示、Cms系统的实现
1. 学习计划 1.前台系统搭建 2.商城首页展示 3.Cms系统的实现 a) 内容分类管理 b) 内容管理 4.前台内容动态展示 2. 商城首页展示 系统架构: 页面位置: 2.1. 工程搭建 可以 ...
随机推荐
- sql server 防 注入
这里使用的是参数化 SqlParameter useremail = new SqlParameter("@useremail", user.user_Email); SqlPar ...
- Protocol handler start failedCaused by: java.net.SocketException: Permission denied
最近在使用mac启动项目的时候,发现原本在Windows下正常跑的项目报错如下: Protocol handler start failedCaused by: java.net.SocketExce ...
- 中国大学MOOC课程信息爬取与数据存储
版权声明:本文为博主原创文章,转载 请注明出处: https://blog.csdn.net/sc2079/article/details/82016583 10月18日更:MOOC课程信息D3.js ...
- idHTTP.Post
procedure TForm4.Button2Click(Sender: TObject); var sResponse: string; EnvStr : TStringStream; begin ...
- PAT Basic 1082 射击比赛 (20 分)
本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟.我们假设靶心在原点(0,0). 输入 ...
- VSCODE常用插件使用记录
常用必备: 1.vscode-icon 让 vscode 资源树目录加上图标,必备良品! 2.Path Intellisense 自动路劲补全,默认不带这个功能的 3.beautify Beautif ...
- vue项目环境的搭建
首先要明白Vue是基于node的,在公司要使用vue来开发项目的话肯定是要先安装node的,下面是搭建一个最简单的vue项目环境 一 安装node 这个可以去node的官网下载对应版本 安装好之后 c ...
- python之抽象类&abc模块+虚拟子类®ister
抽象类和接口: java 我们先从java讲起,没有java基础的可以略过. (挖坑) python 在python并没有抽象类之说,或者说抽象类=接口类(区别于接口) 继承有两种用途: 一:继承基类 ...
- HDU 6076 - Security Check | 2017 Multi-University Training Contest 4
/* HDU 6076 - Security Check [ DP,二分 ] | 2017 Multi-University Training Contest 4 题意: 给出两个检票序列 A[N], ...
- ila核数据输出
在Tcl Console中输入以下命令(其中dataxxxx表示文件名,hw_ila_2则为ila窗口名): write_hw_ila_data -csv_file -force dataxxxx [ ...