Django - 发送邮件

一、业务场景

  • 业务警告
  • 邮件验证
  • 密码找回

二、邮件相关协议

2.1. SMTP
  • SMTP的全程是"Simple Mail Transfer Protocol",即简单邮件传输协议(25号端口)
  • 它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转
  • 属于"推送"协议
2.2. IMAP
  • IMAP的全称是"Internet Message Access Protocol",即交互式邮件访问协议,是一个应用层协(143号端口)
  • 用来从本地邮件客户端(Outlook Express、Foxmail、Mozilla Thunderbird等)访问远程服务器上的邮件
  • 属于"拉取"协议
2.3. POP3
  • POP3的全称是"Post Office Protocol 3",即邮局协议的第三个版本,是TCP/IP协议族中的一员(110号端口)
  • 本协议主要用于支持使用客户端远程管理在服务器上的电子邮件
  • 属于"拉取"协议
2.4. IMAP VS POP3

两者均为"拉取"型协议,负责从邮件服务器中下载邮件

  • IMAP具备摘要浏览功能,可预览部分摘要,再下载整个邮件

  • IMAP为双向协议,客户端操作可反馈给服务器

  • POP3必须下载全部邮件,无摘要功能

  • POP3为单向协议,客户端操作无法同步服务器

三、邮件发送过程

在这里插入图片描述

四、Django发邮件

  • Django中配置邮件功能,主要为SMTP协议,负责发邮件
  • 原理:
    • 给Django授权一个邮箱
    • Django用该邮箱给对应收件人发送邮件
    • django.core.mail封装了电子邮件的自动发送SMTP协议

五、授权步骤 - 以QQ邮箱为例

  1. 申请QQ号

  2. 用QQ号登录到QQ邮箱并修改设置

    1. 用申请到的QQ号和密码登录到https://mail.qq.com/

    2. 修改QQ邮箱 → 设置 → 账户 → "POP3/IMAP...服务"

    3. 开启服务,获取授权码
      在这里插入图片描述
      在这里插入图片描述

六、Django配置

在这里插入图片描述

七、函数调用

from django.core import mail

mail.send_mail(
    subject='xx',  # 题目
    message='xx',  # 消息内容
    from_email='xxx@qq.com',  # 发送者[当前配置邮箱]
    recipient_list=['xxx@qq.com'],  # 接收者邮件列表
)

八、练习 - 邮件警告

用中间件实现抓取视图函数的异常,并以发邮件的形式将异常信息发送给指定联系人

  • 邮件主题:‘mysite7异常告警’
  • 内容:自定义即可,要求带有异常信息
  • 收件人要求可灵活配置
8.1. 定义中间件
class ExceptionMW(MiddlewareMixin):
    def process_exception(self, request, exception):
        mail.send_mail(
            subject='mysite7异常告警',
            message=traceback.format_exc(),  # 问题追溯 会将报错的情况给出
            from_email='xxx@qq.com',
            recipient_list=settings.EX_EMAIL
        )
        return HttpResponse('网站繁忙')

其中,收件人邮箱在setting中配置

EX_EMAIL = ['huankai7@163.com']
8.2. 注册中间件

在这里插入图片描述

8.3. 模拟报错

在这里插入图片描述

8.4. 测试
访问http://127.0.0.1:8000/test_upload会发送报错邮件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值