1. 程式人生 > >django-29.發送html格式郵件

django-29.發送html格式郵件

att -s 語法 body key zha 發送html pos rom

上一篇已經通過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裏面寫個視圖函數,調用發送郵件的功能

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‘,     # 正文
              ‘[email protected]‘,         # 發件人
              [‘[email protected]‘],       # 收件人
              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/後收到的郵件內容效果展示如下

技術分享圖片

django-29.發送html格式郵件