Django博客开发拓展 | 开发邮件提醒功能

2020年3月19日 21:46 阅读 1.99k 评论 0

前言

今天在博客的在线工具中增添了一个网课答案查询工具,但是,我不可能随时随地都去查看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
©允许规范转载

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:https://www.yangyingqi.com/14.html

Django Python
微信
支付宝
登录后即可进行评论/回复