Django发送邮件

酥酥 发布于 2021-09-18 94 次阅读


Django发送邮件

  • 业务告警

  • 邮件验证

  • 密码找回

一、邮件相关协议

SMTP协议

  • SMTP的全称是”Simple Mail Transtfer Protocol”, 即简单邮件传输协议(25号端口) 。

  • 它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转

  • 属于“推送”协议

IMAP协议

  • IMAP全称是Internet Mail Access Protocol,艮即交互式邮件访问协议,是一个应用层协议(端口是143)。

  • 用来从本地邮件客户端(Outlook Express、Foxmail、MozillaThunderbird等)访问远程服务器,上的邮件。

  • 属于“拉取”协议

POP3协议

  • POP3是Post Office Protocol 3的简称, 即邮局协议的第3个版本,是TCP/IP协议族中的一员 (默认端口是110)。

  • 本协议主要用于支持使用客户端远程管理在服务器,上的电子邮件

  • 属于“拉取”协议

IMAP VS POP3

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

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

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

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

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

二、利用Django发邮件

  • 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’服务’

申请成功会有一个授权码一定要记住,不外泄!!!!

setting.py配置

  • EMAIL_BACKEND= ‘django. core.mail.backends.smtp.EmailBackend’

  • EMAIL HOST=’smtp.qq. com’#腾讯QQ邮箱SMTP服务器地址

  • EMAIL PORT=25#SMTP服务的端口号

  • EMAIL_HOST_USER=XX@qq.com#发送邮件的QQ邮箱

  • EMAIL HOST PASSWORD=**’#在QQ邮箱->设置->帐户 >”POP3MAP.…服务”里得到的在第三方登录QQ邮箱授权码

  • EMAIL USE_TLS= False#与SMTP服务器通信时,是否启动TLS链接 安全链接)默认False–https协议费时的,也可以删了

函数调用

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