前言
上一篇已经通过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://www.icode9.com/i/l/?n=20&i=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://www.icode9.com/i/l/?n=20&i=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/,展示“邮件发送成功!”,查看邮件内容展示如下