Django发邮件

 https://blog.csdn.net/qq_43030934/article/details/125657400

 

 

获取授权码的方法

163邮箱具体方法请参考:https://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac2cda80145a1742516

foxmail邮箱具体方法请参考:http://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac25c12dcb3d46222b6

outlook邮箱具体方法请参考: http://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac27535b97f102eda26

其他: https://www.cnblogs.com/kaibindirver/p/8216484.html

 

 

seetting文件

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtpdm.aliyun.com'      # 如果是qq邮箱请更换为'smtp.qq.com
EMAIL_PORT = 25
#发送邮件的邮箱
EMAIL_HOST_USER = 'terracexxx@mail.ncctest.cn'
#在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = 'xxxxxx'

 

 

view调用

class BookView(ModelViewSet):
   #发送文字的
    def get(self,request):
        send_mail(
            subject='这里是邮件标题',
            message='这里是邮件内容',
            from_email='terracetest@mail.ncctest.cn',  # 发件人
            recipient_list=['1462986575@qq.com'],  # 收件人
            # fail_silently=False
        )
        return Response(123)
    
    
    #发送html的
    def get(self,request):
        send_mail(
            subject='这里是邮件标题',
            from_email='terracetest@mail.ncctest.cn',  # 发件人
            recipient_list=['1462986575@qq.com'],  # 收件人
            # fail_silently=False
            html_message="<a href=#>123</a>"  #多媒体html的写到这里
        )
        return Response(123)
    
       
    #发送附件的
   def send_email(request):
        """发送带附件"""
        msg = EmailMessage(
            subject='这是带附件的邮件标题',
            body='这是带附件的邮件内容',
            from_email='tian@163.com',  # 也可以从settings中获取
            to=['1206180814@qq.com']
        )
        msg.attach_file('t2.xls')
        msg.send(fail_silently=False)
        return HttpResponse('OK')

发送多个邮件

from django.core.mail import send_mail, send_mass_mail
def send_email(request):
    message1 = ('邮件标题1', '内容1', 'tian@163.com', ['1206180814@qq.com'])
    message2 = ('邮件标题2', '内容2', 'tian@163.com', ['1206180814@qq.com'])
    send_mass_mail((message1, message2), fail_silently=False)
    return HttpResponse('OK')

# 注:send_mail 每次发邮件都会建立一个连接,发多封邮件时建立多个连接。而 send_mass_mail 是建立单个连接发送多封邮件,所以一次性发送多封邮件时 send_mass_mail 要优于 send_mail。

 

 

拼接模版参数化

from django.template import loader
def get(self,request):
        # 通过loader加载模板,通过HttpResponse 将 html相应给客户端
        t = loader.get_template("123.html")
        # 2.通过t对象, 将模板渲染成字符串,其中会参数化替换
        #需要参数化的变量
        parm={"pro_name":11111}
        html = t.render(parm)

123.html

<h2>{{pro_name}}接口自动化测试报告</h2>

 

 

发送html

https://www.cnblogs.com/mocean/p/6791653.html

 

cc为抄送的意思

msg = EmailMultiAlternatives(subject, content, from_email, check_email, cc=["开闭司机@codemao.cn","开闭司机@codemao.cn"])

 

 

后记:

配置设置

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

这样Django将不会真正发送邮件,而是将邮件内容打印到控制台。这可以帮助你检查邮件的配置和内容是否正确。

也可以在页面渲染出来看看 见  https://www.cnblogs.com/kaibindirver/p/16855675.html

 

阿里云用授权码

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_HOST = 'smtp.qiye.aliyun.com'
EMAIL_PORT = 465  # SMTP端口
EMAIL_HOST_USER = '邮箱@.cn' 
EMAIL_HOST_PASSWORD = '授权码'  
EMAIL_SUBJECT_PREFIX = '[测试平台]'  # 为邮件Subject-line前缀,默认是'[django]'
EMAIL_USE_SSL = True

 

密码

EMAIL_HOST = 'smtp.qiye.aliyun.com'
EMAIL_PORT = 25  # SMTP端口 或者465
EMAIL_HOST_USER = '邮箱.cn'  # 我自己的邮箱
EMAIL_HOST_PASSWORD = 'xxxxxx'  # 你自己的邮箱密码
EMAIL_SUBJECT_PREFIX = '[测试平台]'  # 为邮件Subject-line前缀,默认是'[django]'
EMAIL_USE_TLS = True

 

posted @ 2022-12-05 19:34  凯宾斯基  阅读(47)  评论(0)    收藏  举报