前言
今天在博客的在线工具中增添了一个网课答案查询工具,但是,我不可能随时随地都去查看api的情况,所以有时候崩了也不清楚,这个时候就需要写一段自动检测的代码去实现对api的监控,但是这样有点浪费服务器资源,所以我思来想去,想到我为什么不在前端放置一个按钮,让用户来提醒我呢? 说干就干,翻看了Django的文档,我明白了大概流程,首先在博客项目的settiing.py中增加email配置,如下:
# 邮件发送配置
EMAIL_USE_SSL = True # 使用ssl进行传输
# qq 就是 SMTP.qq.com 但是不建议用QQ邮箱来做发件邮箱,一直莫名其妙关闭SMTP服务
EMAIL_HOST = 'smtp.163.com'
EMAIL_PORT = 465 # ssl端口
EMAIL_HOST_USER = '*****@163.com' # 帐号
EMAIL_HOST_PASSWORD = '*******' # 授权密码,在邮箱设置可以开启
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER # 默认发件人
然后在对应app的views.py中增加发送邮件的方法
from django.core.mail import send_mail
def remind_send_mail(request):
try:
send_mail(
'来自博客的提醒',
'查题接口已失效',
'*****@163.com', # 发件人
['****@qq.com'],# 收件人,可以是多个
fail_silently=False # 简单理解为 当为False时发送邮件失败会报错
)
except:
return JsonResponse({'code': -1, 'msg': '提醒失败'})
else:
return JsonResponse({'code': 0, 'msg': '提醒成功'})
再到urls里分配一个路由,对应到发送邮件的方法
然后我们在前端中请求接口就OK了
$("#remind").click(function() {
var csrf = $('input[name="csrfmiddlewaretoken"]').val(); // post方法必须带这个,否则会403
$.post({
url: '/tool/remind',
data: {
'csrfmiddlewaretoken': csrf
},
success: function(res) {
alert(res.msg);
$("#remind").hide() // 无论失败还是成功都隐藏按钮
}
})
})
这样一个简单的邮件提醒功能就做好了,我们可以扩展到各类提醒,比如异常报错提醒,评论回复提醒等等
最后修改于2020年3月19日 21:46
©允许规范转载
Django Python版权声明:如无特殊说明,文章均为本站原创,转载请注明出处
本文链接:https://www.yangyingqi.com/14.html