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/后收到的郵件內容效果展示如下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM