Django發(fā)送html郵件的方法
本文實(shí)例講述了Django發(fā)送html郵件的方法。分享給大家供大家參考。具體如下:
在Django中,發(fā)送郵件非常的方便,一直沒有時(shí)間,今天來做一個(gè)小小的總結(jié)吧。
我們常用的當(dāng)然是通過send_mail發(fā)送郵件:
subject,message,from_email 和recipient_list 這四個(gè)參數(shù)是必須的。
subject: 字符串,表示郵件標(biāo)題。
message: 字符串,表示郵件內(nèi)容。
from_email: 字符串,表示發(fā)件郵箱。
recipient_list: 字符串列表,列表中每個(gè)成員都是一個(gè)郵箱地址,而且每個(gè)收件人都會(huì)在 “收件人/To:” 欄看到出現(xiàn)在recipient_list 中的其他收件人。
fail_silently: (可選)布爾值。為False 時(shí),send_mail 會(huì)拋出smtplib.SMTPException 異常。smtplib 文檔列出了所有可能的異常。這些異常都是SMTPException 的子類。
auth_user: (可選)SMTP服務(wù)器的認(rèn)證用戶名。沒提供該參數(shù)的情況下,Django會(huì)使用EMAIL_HOST_USER 配置項(xiàng)的設(shè)置。
auth_password: (可選)SMTP服務(wù)器的認(rèn)證密碼,沒提供該參數(shù)的情況下,Django會(huì)使用EMAIL_HOST_PASSWORD 配置項(xiàng)的設(shè)置。
connection: (可選)發(fā)送郵件的后端。沒提供該參數(shù)的情況下,Django會(huì)使用默認(rèn)后端的實(shí)例。
以下是一個(gè)簡單的事例:
from django.core.mail import send_mail from django.template import Context, loader context = { 'nickname': user.nickname, 'verify_url': verify_url, } email_template_name = 'template.html' t = loader.get_template(email_template_name) mail_list = [user.email, ] send_mail( subject=title, message=t.render(Context(context)), from_email=EMAIL_HOST_USER,# 發(fā)件郵箱 recipient_list=mail_list, fail_silently=False, auth_user=EMAIL_HOST_USER, # SMTP服務(wù)器的認(rèn)證用戶名 auth_password=EMAIL_HOST_PASSWORD, # SMTP服務(wù)器的認(rèn)證用戶密碼 connection=None )
用過的人可能會(huì)發(fā)現(xiàn),你在template.html中的標(biāo)簽,并沒有通過瀏覽器的解析而顯示出來了。
怎么辦?我們要發(fā)送HTML郵件,Django當(dāng)然是為你提供了好的解決方案的,請看下面一段代碼:
from django.core.mail import EmailMultiAlternatives from django.template import Context, loader subject, from_email, to = title, EMAIL_HOST_USER, mail_list html_content = t.render(Context(context)) msg = EmailMultiAlternatives(subject, html_content, from_email, to) msg.attach_alternative(html_content, "text/html") msg.send()
看,很簡單吧,那么現(xiàn)在我要稍稍的做一點(diǎn)點(diǎn)改動(dòng),我需要發(fā)送附件給收件人,只需要做一個(gè)簡單的修改即可:
from django.core.mail import EmailMultiAlternatives from django.template import Context, loader subject, from_email, to = title, EMAIL_HOST_USER, mail_list html_content = t.render(Context(context)) msg = EmailMultiAlternatives(subject, html_content, from_email, to) msg.attach_alternative(html_content, "text/html") msg.attach_file(u'D:/My Documents/Python/doc/test.doc') # 添加附件發(fā)送 msg.send()
好了,到此為止,發(fā)送郵件已經(jīng)結(jié)束了。不過,此時(shí),需求變了,我在自己的網(wǎng)站上配置了多個(gè)發(fā)送郵件的用戶名和密碼,現(xiàn)在需要用我指定的用戶名和密碼給用戶發(fā)送郵件,該怎么辦呢?請看下面的一段代碼:
from django.core.mail import EmailMultiAlternatives,get_connection from django.template import Context, loader conn = get_connection() # 返回當(dāng)前使用的郵件后端的實(shí)例 conn.username = 'my_email@qq.com'# 更改用戶名 conn.password = 'my_email' # 更改密碼 conn.host = 'smtp.exmail.qq.com' # 設(shè)置郵件服務(wù)器 conn.open() # 打開連接 EMAIL_HOST_USER = 'my_email@qq.com' subject, from_email, to = title, EMAIL_HOST_USER, mail_list html_content = t.render(Context(context)) msg = EmailMultiAlternatives(subject, html_content, from_email, to) msg.attach_alternative(html_content, "text/html") conn.send_messages([msg,]) # 我們用send_messages發(fā)送郵件 conn.close()# 發(fā)送完畢記得關(guān)閉連接
看來,也不是很難吧!
django.core.mail 的 get_connection()方法返回你當(dāng)前使用的郵件后端的實(shí)例。
默認(rèn)情況下,對 get_connection() 的調(diào)用會(huì)返回一個(gè)郵件后端實(shí)例,具體是哪個(gè)后端由EMAIL_BACKEND 配置項(xiàng)決定。如果指定了``backend`` 參數(shù),就會(huì)對該后端進(jìn)行實(shí)例化。
友情提示:在發(fā)送的HTML郵件中包含圖片時(shí),應(yīng)該制定可以通過http訪問的地址。如:http://www.baidu.com/medias/xxx.png
希望本文所述對大家的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python內(nèi)置模塊ConfigParser實(shí)現(xiàn)配置讀寫功能的方法
這篇文章主要介紹了Python內(nèi)置模塊ConfigParser實(shí)現(xiàn)配置讀寫功能的方法,涉及Python使用ConfigParser模塊進(jìn)行配置讀、寫、修改、刪除等操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-02-02在python tkinter界面中添加按鈕的實(shí)例
今天小編就為大家分享一篇在python tkinter界面中添加按鈕的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03基于python的漢字轉(zhuǎn)GBK碼實(shí)現(xiàn)代碼
今天想用python調(diào)用百度框計(jì)算的搜過結(jié)果,看到了URL里面的漢字用GBK編碼,雖然可以直接在URL里面加入中文,之前也做過一個(gè)簡體字轉(zhuǎn)GBK碼的python函數(shù),但還是略嫌麻煩,今天改了一下2012-02-02使用Python 自動(dòng)生成 Word 文檔的教程
今天小編就為大家分享一篇使用Python 自動(dòng)生成 Word 文檔的教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02Tensorflow tf.nn.atrous_conv2d如何實(shí)現(xiàn)空洞卷積的
這篇文章主要介紹了Tensorflow tf.nn.atrous_conv2d如何實(shí)現(xiàn)空洞卷積的,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04python爬蟲利器之requests庫的用法(超全面的爬取網(wǎng)頁案例)
這篇文章主要介紹了python爬蟲利器之requests庫的用法(超全面的爬取網(wǎng)頁案例),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12