美文网首页
Django笔记:邮件发送

Django笔记:邮件发送

作者: 倔犟的贝壳 | 来源:发表于2021-06-07 11:30 被阅读0次

    Django有一系列内置的模块,提供了多种邮件发送的方法。
    在实现邮件发送功能之前,需要对邮箱进行相关配置。以QQ邮箱为例
    在QQ邮箱的设置中,在账户设置中找到POP3/SMTP服务,开启POP3/SMTP服务。

    开启POP3/SMTP服务

    开启后会有一个授权密码,保存好,在开发过程中需要设置它

    然后在项目的settings.py中添加邮箱的相关配置:

    #邮箱配置
    EMAIL_USE_SSL = True
    #邮件服务器
    EMAIL_HOST = 'smtp.qq.com'
    #邮件服务器端口
    EMAIL_PORT = 465
    #发送邮箱的账号
    EMAIL_HOST_USER = '1483199618@qq.com'
    #SMTP服务密码
    EMAIL_HOST_PASSWORD = 'yphwbadpnbvgjebe'
    DEFAULT_FROM_EMAIL  = EMAIL_HOST_USER
    
    

    配置完成后,就可以调用内置的邮件发送方法进行邮件发送了

    1. send_mail

    每次发送邮件都会建立一个新的连接,如果发送多封邮件,就需要建立多个连接

    In [1]: from django.core.mail import send_mail
    
    In [2]: from django.conf import settings
    
    In [3]: from_email = settings.DEFAULT_FROM_EMAIL
    
    In [4]: send_mail('Subject','content',from_email,['1483199618@qq.com'])
    
    

    2. send_mass_mail

    建立单个连接发送多封邮件,建立一次性发送多封邮件时,send_mass_mail 优于send_mail

    
    In [5]: from django.core.mail import send_mass_mail
    
    In [6]: msg1 = ('Subject','This is msg 1',from_email,['1483199618@qq.com'])
    
    In [7]: msg2 = ('Subject','This is msg 2',from_email,['1483199618@qq.com'])
    
    In [8]: send_mass_mail((msg1,msg2),fail_silently=False)
    Out[8]: 2
    
    
    

    3.EmailMultiAlternatives

    比前面两者更为个性化,可以设置邮件正文内容为HTML格式,也可以添加附件,满足多方面的开发需求

    
    In [9]: from django.core.mail import EmailMultiAlternatives
    
    In [10]: content = '<p>这是一封<strong>重要的</strong>邮件</p>'
    
    In [11]: msg = EmailMultiAlternatives('Subject',content,from_email,['1483199618@qq.com'])
    #将正文设置为html
    In [12]: msg.content_subtype = 'html'
    #对正文内容进行补充
    In [13]: msg.attach_alternative('<strong> This is from Django</strong>','text/html')
    #添加附件
    In [14]: msg.attach_file('/Users/huanghuan/Desktop/map.jpeg')
    #发送
    In [15]: msg.send()
    
    

    4.User的email_user

    另外,在Django自带的User类中,为方便实现找回密码,发送验证码给用户等,有一个内置的实例方法:email_user,它发送给的是User对象的email,即auth_user表中的email字段。首先获取到要发送的指定用户user,然后user.email_user('Subject','content)

    相关文章

      网友评论

          本文标题:Django笔记:邮件发送

          本文链接:https://www.haomeiwen.com/subject/qrtkeltx.html