一、业务场景
业务警告
邮箱验证
密码找回
二、邮件相关协议
1.SMYTP(简答邮件传输协议 25端口)
属于"推送"协议 负责发送
2.IMAP(交互式邮件访问协议,应用层协议,143端口)
用于从本地邮件客户端访问远程服务器上的邮件
属于"拉取"协议
3.POP3(邮局协议的第三个版本,TCP/IP中的一员 110端口)
支持使用客户端远程管理在服务器上的电子邮件
属于"拉取"协议
IMAP 和 POP3区别
IMAP具备摘要浏览功能,可预览部分摘要。在下载整个邮件
IMAP为双向协议,客户端操作可反馈给服务器
POP3必须下载全部邮件,无摘要功能
POP3为单项协议,客户端操作无法同步服务器
用户A 给用户B发送邮件的过程
三、Django发邮件
Django中配置邮件功能,主要为SMTP协议,负责发邮件
1.原理:
给Django授权一个邮箱
Django用该邮箱给对应收件人发送邮件
django.core.mail封装了电子邮件的自动发送SMTP协议
2.授权步骤-QQ邮箱为例
申请账号
登录QQ邮箱并修改设置
修改 QQ邮箱->设置->账户->"POP3/IMAP....服务"
3.配置(settings.py)
各个邮箱授权密码获取方式网上百度
python
# 邮件相关配置
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
# 腾讯QQ邮箱 SMTP服务器地址
EMAIL_HOST = 'smtp.qq.com'
# SMTP服务器的端口号
EMAIL_PORT = 25
# 发送邮件的QQ邮箱
EMAIL_HOST_USER = 'xxxxxx@qq.com'
# 授权密码
EMAIL_HOST_PASSWORD = 'xxxxxx'
# 与SMTP服务器通信时,是否启动TLS链接(安全链接)默认False
EMAIL_USE_TLS = False
4.函数调用
- 给一个人
python
from django.core import mail
class TestEmali(APIView):
def post(self,request):
mail.send_mail(subject="测试",message="测试邮箱",from_email="1353973780@qq.com",recipient_list=["1353973780@qq.com"])
return Response("success")
各参数如下:
- subject,邮件标题
- message,发送邮件内容
- from_email,发件人
- recipient_list,收件人,可以是多个
- fail_silently,如果为
False
时,发送失败抛出错误
- 给多个人
- 多封邮件给多个人