django8.3 发送邮件

django发送邮件

  1. 协议:

    1. SMTP协议:简单邮件传输协议(25号端口),负责发邮件,属于推送协议。
    2. IMAP协议:交互式邮件访问协议(143号端口),负责收邮件,属于拉取协议。
    3. POP3也是负责收邮件的(110号端口),也属于拉取协议
    4. IMAP和POP3都属于拉取型协议,负责从邮件服务器中下载邮件:
      1. IMAP具备摘要浏览功能,可预览部分摘要,再下载整个邮件。IMAP是双向协议,客户端操作可反馈给服务器。
      2. POP3必须下载全部邮件,没有摘要功能,是单向协议,客户端操作无法同步服务器。
  2. Django主要负责发邮件,充当邮件客户端的身份,django中配置邮件功能,主要是SMTP协议。负责发邮件

    1. 原理:

      1. 给Django授权一个邮箱
      2. Django用该邮箱给对应收件人发送邮件
      3. django.core.mail中封装了电子邮件的自动发送SMTP协议。
    2. 授权步骤:以QQ邮箱为例:

      1. 登录qq邮箱,上方有个设置,点进去之后上边菜单栏有个账户,找到有SMTP的那个服务,打开。会有发短信息的提示,按照流程一步步来就ok,最后拿到一个授权码,先存下来,后边用。
      2. 进行django配置:
        EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
        EMAIL_HOST='smtp.qq.com'  #腾讯qq邮箱SMTP服务器地址
        EMAIL_PORT=25 #SMTP服务的端口号
        EMAIL_HOST_USER='xxxx@qq.com' #发送邮件的qq邮箱
        EMAIL_HOST_PASSWORD='xxxxxxx' #在qq邮箱->设置->账户->“POP3/IMAP..服务”中得到的第三方登录qq邮箱的授权码
        EMAIL_USE_TLS=False #与SMTP服务器通信时,是否启动TLS链接(安全链接),默认是False
        
    3. 函数调用:到django shell中进行调试:(shell会加载settings中的配置项)

      from django.core import mail
      mail.send_mail(
      		subject='',  #题目(字符串)
      		message='',  #消息内容(字符串)
      		from_email='',  #发送者(当前配置邮箱)(字符串)
      		recipient_list=['xxx@qq.com'], #收件人(数组)
      		)
      
  3. 练习:用中间件实现抓取视图函数的异常,并以邮件的形式将异常信息发送给指定联系人,

    1. 要求:
      1. 邮件主题:mysite7异常警告
      2. 内容:要求带有异常信息
      3. 收件人可灵活配置
    2. 实现:
      1. 在项目文件夹下新建一个python 包"middleWare",创建一个文件"mymiddleware.py"用于写中间件的类,写完中间件之后记得在settings中注册.
        # 写完之后记得注册
        from django.http import HttpResponse
        from django.utils.deprecation import MiddlewareMixin
        import traceback
        from django.core import mail
        from django.conf import settings
        class ExceptionMiddleWare(MiddlewareMixin):
        	def process_exception(self,request,exception):
        		#终端会打印错误信息
        		print(exception)
        		print(traceback.format_exc())
        		#将异常信息通过邮件发送给settings中配置的收件人
        		mail.send_mail(subject='mysite7报错了',message=traceback.format_exc(),from_email='xxxxxxxx@qq.com',recipient_list=settings.EX_EMAIL_LIST)
        		return HttpResponse('--当前网页忙碌--')
        
      2. 随便找个视图函数添加个小错误,比如加上个未被定义的变量名a,现在去访问这个url(先确保项目启动起来了),就会弹出响应’–当前网页忙碌–’.
      3. 收件人能够自定义,那么就在settings中自己定义个变量EX_EMAIL_LIST=['xxxx@qq.com'],不过用到配置文件得先进行引入from django.conf import settings
      4. 终端中也会打印错误信息
        name 'a' is not defined
        Traceback (most recent call last):
          File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
            response = wrapped_callback(request, *callback_args, **callback_kwargs)
          File "/xxxxx/day08/mysite7/mysite7/views.py", line 59, in test_upload
            a
        NameError: name 'a' is not defined
        
        
    3. 这样邮箱中就能收到带有异常信息的邮件了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值