python测试开发django(27)--发送html格式邮件

前言

上一篇已经通过send_mail()函数发送纯文本的邮件,发送成功了,如果我们想发送一个html格式的邮件,如何实现呢?

发送html格式的邮件实际上还是调用send_mail()函数,只需多加一个html_message参数

html_message参数

从上一篇的send_mail()函数里面key看出,里面有个参数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://i.cnblogs.com/posts?cateId=1633461" target="_blank">
    <p>点图片进入jango文章列表<br>
    <img src="https://img2020.cnblogs.com/blog/1568466/202012/1568466-20201210134825437-84987008.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里面写个视图函数,调用发送邮件的功能

#coding:utf-8

from django.http import HttpResponse
from django.core.mail import send_mail

def html_mail(request):
    h='''
    <!DOCTYPE HTML>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>带图片的邮件</title>
    </head>
    <body>
    <a href="https://i.cnblogs.com/posts?cateId=1633461" target="_blank">
        <p>点图片进入jango文章列表<br>
        <img src="https://img2020.cnblogs.com/blog/1568466/202012/1568466-20201210134825437-84987008.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('带html的邮件',   #主题
              'hello,你看到邮件了吗',  #正文
              '3733505@qq.com',   #发件人
              ['3733505@qq.com'], #收件人
              fail_silently=False,
              html_message=h)   #html邮件
    return HttpResponse('邮件发送成功!')

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

# coding:utf-8

from django.conf.urls import url
from tb import views

urlpatterns = [
    # 新增用户
    url(r'^register/', views.register),
    url(r'^login/', views.login),
    url('^chpwd/',views.reset_pwd),
    url('^sendmail',views.mail),
    url('^mails/',views.mails),
    url('^hmail/',views.html_mail),
]

 访问http://127.0.0.1:8000/hmail/,展示“邮件发送成功!”,查看邮件内容展示如下

  

 

  

原文地址:https://www.cnblogs.com/canglongdao/p/14115049.html