一、业务场景
- 业务警告
- 邮件验证
- 密码找回
二、邮件相关协议
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邮箱为例
-
申请QQ号
-
用QQ号登录到QQ邮箱并修改设置
-
用申请到的QQ号和密码登录到https://mail.qq.com/
-
修改
QQ邮箱 → 设置 → 账户 → "POP3/IMAP...服务"
-
开启服务,获取授权码
-
六、Django配置
七、函数调用
from django.core import mail
mail.send_mail(
subject='xx', # 题目
message='xx', # 消息内容
from_email='xxx@qq.com', # 发送者[当前配置邮箱]
recipient_list=['xxx@qq.com'], # 接收者邮件列表
)
测试:进入shell
$ python3 manage.py shell
八、练习 - 邮件警告
用中间件实现抓取视图函数的异常,并以发邮件的形式将异常信息发送给指定联系人
- 邮件主题:‘mysite7异常告警’
- 内容:自定义即可,要求带有异常信息
- 收件人要求可灵活配置
8.1. 定义中间件
class ExceptionMW(MiddlewareMixin):
def process_response(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会发送报错邮件
转载:https://blog.csdn.net/KaiSarH/article/details/116724290
查看评论