zoukankan      html  css  js  c++  java
  • python测试开发django-29.发送html格式邮件

    前言

    上一篇已经通过send_mail()函数发送纯文本的邮件,发送成功了,如果我们想发送一个html格式的邮件,如何实现呢?
    发送html格式的邮件实际上还是调用send_mail()函数 ,只需多加一个html_message参数

    html_message参数

    从上一篇的send_mail()函数里面可以看出,里面有个参数html_message默认是为None,部分源码如下

    mail = EmailMultiAlternatives(subject, message, from_email, recipient_list, connection=connection)
        if html_message:
            mail.attach_alternative(html_message, 'text/html')

    当html_message参数不为空的时候,会调用EmailMultiAlternatives类里面的方法,发送html格式的文件

    如我们需要发送的html内容如下

    <!DOCTYPE HTML>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>带图片的邮件</title>
    </head>
    <body>
    <a href="https://yuedu.baidu.com/ebook/902224ab27fff705cc1755270722192e4536582b" target="_blank">
        <p>pytest教程,点图片进入:<br>
        <img src="https://img2018.cnblogs.com/blog/1070438/201902/1070438-20190228112918941-704279799.png" height="160" width="270" />
        </p></a>
    <p>
    其它图片:<br>
    <img src="http://www.w3school.com.cn/i/eg_chinarose.jpg" height=150 width=300/></p>
    <p>请注意,插入动画图像的语法与插入普通图像的语法没有区别。</p>
    </body>
    </html>
    

    在浏览器效果

    views和urls.py

    在views.py里面写个视图函数,调用发送邮件的功能

    from django.http import HttpResponse
    from django.core.mail import send_mail, send_mass_mail
    
    def mail_html(request):
        '''发送html格式邮件'''
        h = '''
        <!DOCTYPE HTML>
        <html>
        <head>
            <meta charset="UTF-8">
            <title>带图片的邮件</title>
        </head>
        <body>
        <a href="https://yuedu.baidu.com/ebook/902224ab27fff705cc1755270722192e4536582b" target="_blank">
            <p>pytest教程,点图片进入:<br>
            <img src="https://img2018.cnblogs.com/blog/1070438/201902/1070438-20190228112918941-704279799.png" height="160" width="270" />
            </p></a>
        <p>
        其它图片:<br>
        <img src="http://www.w3school.com.cn/i/eg_chinarose.jpg" height=150 width=300/></p>
        <p>请注意,插入动画图像的语法与插入普通图像的语法没有区别。</p>
        </body>
        </html>
        '''
        send_mail('Subject here',             # 主题
                  'hell',     # 正文
                  '2833404xx@qq.com',         # 发件人
                  ['xxx@xx.com'],       # 收件人
                  fail_silently=False,
                  html_message=h)                # html邮件
        return HttpResponse('邮件发送成功,收不到就去垃圾箱找找吧!')
    

    urls.py写个访问地址触发发邮件

    from django.conf.urls import url
    from hello import views
    
    urlpatterns = [
        # 新增用户
        url(r'^register/', views.register),
        url(r'^login/', views.login),
        url(r'^reset/', views.reset_psw),
       url(r'^mail/', views.mail),
       url(r'^mail_html/', views.mail_html),
    ]
    

    访问http://localhost:8000/mail_html/后收到的邮件内容效果展示如下

  • 相关阅读:
    SQL数据去重复 Distinct 和 row_number() over()
    Excel闪退问题解决
    SQL Server 修改服务器登录名称以及密码
    从底层角度看ASP.NET-A low-level Look at the ASP.NET Architecture
    MD5加密
    MD5实例化异常 未能执行FIPS验证加密算法
    JDBC(上)
    自学MySQL第二天
    自学MySQL第一天
    自学JavaWeb第五天jQuery进阶
  • 原文地址:https://www.cnblogs.com/mashuqi/p/11002453.html
Copyright © 2011-2022 走看看