一、邮件相关协议-SMTP
SMTP全称是Simple Mail Transfer Protocol,即简单邮件传输协议(25端口号)
它是由一组从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转
属于推送协议,负责邮件的发送
 
二、邮件相关协议-IMAP
IMAP全称是 Internet Mail Access Protocol 即交互式邮件访问协议,.是一个应用层协议(端口143)
用了从本地邮件客户端(Outlook Express、Foxmail、Mozilla、Thunderbird) 访问远程服务器上的邮件
属于拉取协议,负责邮件的接收
 
三、邮件相关协议-POP3
POP3是Post Office Protocol3的简称,即邮局协议的第三个版本,是TCP/IP协议族中的一员(默认端口110)
本协议主要用于支持使用客户端远程管理服务器上的电子邮件
属于拉取协议,负责邮件的接收
 
四、IMAP和POP3
两者均为拉取型协议,负责从邮件服务器中下载邮件
IMAP具备摘要浏览功能,可预览部分摘要,再下载整个邮件
IMAP为双向协议,客户端操作可反馈给服务器
 
POP3必须下载全部邮件,无摘要功能
POP3为单向协议,客户端操作无法同步服务器
 
五、邮件传输过程
 
六、Django发邮件
Django中配置邮件功能,主要为SMTP协议,负责发邮件
原理:
给Django授权一个邮箱
Django用该邮箱给对应接收人发送邮件
django.core.mail封装了电子邮件自动发送SMTP协议
 
授权步骤:
1.进入任意品牌的邮箱,设置里面开启SMTP服务
2.保存该邮箱的授权码
3.settings.py进行邮件配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'  # Django邮件引擎
EMAIL_HOST = 'smtp.xx.com' # 对应邮箱SMTP服务器地址,例如smtp.qq.com / smtp.163.com等
EMAIL_PORT = 25 # SMTP服务端口号
EMAIL_HOST_USER = 'xxxx@xx.com' # 发送邮件等邮箱,例如 test@163.com
EMAIL_HOST_PASSWORD = '******' # 对应邮箱设置里面获得的授权码
EMAIL_USE_TLS = False # 与SMTP服务器通信时,是否启动TLS链接(安全链接),默认False
函数调用
from django.core import mail

mail.send_mail(
subject='title', # 邮件标题
message='connect', # 邮件内容
from_email='my_email@163.com', # 发送者[当前配置邮箱]
recipient_list=['xxx@xx.com'], # 接收者邮件列表
)
六、邮件告警
用中间件实现抓取视图函数异常,并以邮件的形式将异常信息发送给指定联系人
 
#settings.py
EX_EMAIL = ['xxx@qq.com'] #可以在settings中自定义一个邮件列表,可灵活配置
#中间件
import traceback
from django.core import mail
from django.conf import settings class ExceptionMW(MiddlewareMixin):
def process_exception(self, request, exception):
mail.send_mail(
subject='server_error', # 邮件标题 / 报错的函数名
message=traceback.format_exc(), # 报错信息
from_email='my_email@163.com', # 发送者[当前配置邮箱]
recipient_list=settings.EX_EMAIL, # 接收者邮件列表
) return HttpResponse('error')
 
七、邮件告警错误追溯信息
当正式服务器上代码运行有报错时候,可将错误追溯信息发至指定邮箱
settings.py中-在基础邮箱授权后,添加配置
#关闭调试模式
DEBUG = False #错误报告接收方
ADMINS = [('username','email@qq.com'),('username','email@qq.com')] #接收人名字/邮件地址 #发送错误报告方,默认为root@localhost账户,多数邮件服务器会拒绝,需要修改成配置的邮箱
SERVER_EMAIL = 'email配置中的邮箱'
过滤敏感信息
报错邮件会显示一些错误的追踪,可能出现一些敏感信息,用户自定义的视图函数需要手动过滤敏感信息
 
可过滤如下信息:
局部变量
post提交数据
#过滤局部变量

from django.views.decorators.debug import sensitive_variables

@sensitive_variables('','') #参数为要过滤的变量,会替换成****
def xxx():
... #多个装饰器时,需要将sensitive_variables放在最顶部
#若不传参数,则过滤所有局部变量的值
#过滤post请求
from django.views.decorators.debug import sensitive_post_parameters
@sensitive_post_parameters('','') #要过滤的参数会替换成****
def xxx():
...
 

27.-Django发送邮件的更多相关文章

  1. Django 发送邮件

    问题: 对于一些错误信息或用户注册账号的时候,需要给用户发送邮件进行验证. 以用户注册发邮件为例子,用户向后端提起注册,后端收到用户邮箱,对邮箱格式进行验证,然后发送邮件,邮件内容中包括邮件标题.邮件 ...

  2. Django——发送邮件

    Django--发送邮件 在web应用中,服务器对客户发送邮件来通知用户一些信息,可以使用邮件来实现. Django中提供了邮件接口,使我们可以快捷的建设一个邮件发送系统. 以下是一个简单实例: se ...

  3. $Django 发送邮件--django封装模块和python内置SMTP模块

    一 使用SMTP模块发送邮件 import smtplib from email.mime.text import MIMEText from email.header import Header m ...

  4. Django发送邮件和itsdangerous模块的配合使用

    项目需求:用户注册页面注册之后,系统会发送一封邮件到用户邮箱,用户点击链接以激活账户,其中链接中的用户信息需要加密处理一下 其中激活自己邮箱的smtp服务的操作就不在加以说明,菜鸟教程上有非常清晰的讲 ...

  5. django发送邮件的坑

    django发送邮件的坑 配置django发邮件的时候本地发送时好好的,但是放到阿里云的服务器上却不能发送. 经过一系列的排查后终于发现是阿里云把25端口给封了. 后来改用smtps的方式发送,更改d ...

  6. Django发送邮件

    1. 配置相关参数 如果用的是 阿里云的企业邮箱,则类似于下面: 在 settings.py 的最后面加上这些 EMAIL_BACKEND='django.core.mail.backends.smt ...

  7. django发送邮件send_mail&send_mass_mail

    一.配置 在setting.py中进行相关配置: EMAIL_HOST = 'smtp.sina.cn' #SMTP地址 EMAIL_PORT = 25 #SMTP端口 EMAIL_HOST_USER ...

  8. django 发送邮件功能

    setting.py # 邮件配置 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.e ...

  9. Django发送邮件方法

    在Django中将渲染后的模板进行邮件发送,可以使用send_email方法 首先在settings.py中添加如下配置 # 邮件配置SSL加密方式 EMAIL_HOST = 'smtp.qq.com ...

随机推荐

  1. Windows 查看端口占用并关闭

    在启动服务的时候,可能会遇到端口被占用的情况. 这时候就需要知道哪个服务占用了这个端口,并将其关闭. 然后再启动服务就不会存在端口占用了. 这里以 Tomcat 的默认端口 8080 为例. 打开命令 ...

  2. Spring源码 20 手写模拟源码

    参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...

  3. MySQL字段类型与操作

    MYSQL字段类型与操作 字符编码与配置文件 操作 代码 功能 查看 \s 查看数据库基本信息(用户.字符编码) 配置(配置文件层面) my-default.ini windows下MySQL默认的配 ...

  4. 线性代数 | Jordan 标准型的笔记

    内容概述: 把方阵 A 的特征多项式 \(c(λ)=|λE-A|\) 展开成 \(c(λ)=\sum_ia_i\lambda^i\) 的形式,然后使用神乎其技的证明,得到 \(c(A)=O\),特征多 ...

  5. Python自学教程8-数据类型有哪些注意事项

    不知不觉,python自学教程已经更新到第八篇了,再有几篇,基本的语法就介绍完了. 今天来总结一下数据类型有哪些需要注意的地方. 元组注意事项 元组是另一种经常使用到的数据类型,看上去和列表差不多.它 ...

  6. 快速生成组件语法模板的插件:Auto Close Tag

    好家伙, 这是一个"标签闭合"插件 Auto Close Tag的安装: 来到VScode的拓展 安装后, 在其中输入一个左标签符号"<",随后会出现提示 ...

  7. Java 多线程:锁(三)

    Java 多线程:锁(三) 作者:Grey 原文地址: 博客园:Java 多线程:锁(三) CSDN:Java 多线程:锁(三) StampedLock StampedLock其实是对读写锁的一种改进 ...

  8. haodoop新特性

    Hadoop2.x新特性 scp实现两个远程主机之间的文件复制 scp -r hello.txt root@hadoop103:/user/atguigu/hello.txt // 推 push sc ...

  9. uniapp|微信小程序获取当前城市名称--逆地址解析

    六年代码两茫茫,不思量,自难忘 6年资深前端主管一枚,只分享技术干货,项目实战经验 关注博主不迷路~ 问题 uniapp开发的小程序需要获取当前城市名称 解决步骤 看文档 当然是看uniapp文档,我 ...

  10. Rust-函数

    函数结构 函数要点 函数名和变量名使用蛇形命名法(snake case),例如 fn add_two() -> {} 函数的位置可以随便放,Rust 不关心我们在哪里定义了函数,只要有定义即可 ...