Django發HTML郵件

工作中一般不會只發純文件格式的郵件,所以這一章講發送HTML格式的郵件

setting.py

在setting.py的末尾加上如下代碼:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'  #調用Django模塊 一般不變
EMAIL_HOST ='smtp.qq.com' #郵件服務器,和你發郵件的郵箱相對應。企業用的話一般需要詢問一下,每個企業有自己的郵箱服務器配置
EMAIL_PORT = 25   #端口 一般25
EMAIL_HOST_USER='[email protected]' #發件箱:<span style="font-family: Arial;">可直接向外發送郵件的私人郵箱 或 </span>幫你向外轉發郵件的企業提供的特殊郵箱(企業郵箱)
EMAIL_HOST_PASSWORD='123456' #密碼

view.py

加在view.py的頭部,我們要使用放在view.py同級目錄下的MultiEmail.py文件中的SendMultiEmail函數(自己寫的)

from MultiEmail import SendMultiEmail


MultiEmail.py

from django.core.mail import EmailMultiAlternatives #導入郵件模塊

#tolist:收件人;cclist:抄送人;fromemail:發件人
#郵件中顯示的發件人的郵箱,可以試試以其他人的郵件發哈,不保證成功^^
def SendMultiEmail(fromemail,tolist,cclist): 
    try:
        #郵件裏會用到漢字,鑑於Python裏的編碼特別亂,這裏最好設置一下編碼。
        reload(sys)
        sys.setdefaultencoding('utf-8')   
        #發送郵件的主體,可以放在函數內,也可以通過參數傳過來,看自己需要。
        html_body = '''  
    		<h3>Hi!<br>This is a test Email.</h3>
    		<table border="1" style="border-width:1px;border-color: #000;border-style:solid;border-collapse: collapse;">
    		<tr align="center" style="font-weight:bold;font-family:micorsoft yahei;height:30px;">
    		<td width="150">第一列</td>
    		<td width="80">第二列</td>
    		<td width="80">第三列</td>
    		</tr></table>
   		 '''
        
        #html_body可以通過傳入參數賦值,也可以寫好各部分後加在一起。
        #case = '''
        #    <table  border="1" style="border-width:1px;border-color: #000;border-style:solid;border-collapse: collapse;">
        #    <tr align="center" style="font-family:micorsoft yahei;height:30px;">
        #    <td width="150">%s</td>
        #    <td width="80">%s</td>
        #    <td width="80">%s</td>
	#    </tr></table>'''%(str1,str2,str3)
        #html_body = html_body + case
	
        text_content = 'Hi!這是一封測試郵件。'#對方不支持多媒體郵件的話顯示這裏的內容
        subject = '測試郵件' #郵件標題
        
        #headers = {"Cc":",".join(cclist)}這一部分起到顯示的作用。
        #不加的話,郵件是可以發送成功的,但是發送的郵件裏不顯示抄送的名單,回覆的時候不能回覆所有,不方便
        msg = EmailMultiAlternatives(subject, text_content, from_email, tolist, cclist, headers = {"Cc":",".join(cclist)})
        #郵件顯示html_body的內容,html編碼
        msg.attach_alternative(html_body, "text/html")
        msg.send()
        return True
    except Exception, e:
        return False

Tips:

1.bcc暗送功能一直沒有實現。

2.發送多封郵件的話,循環調用就可以了,沒測試出有什麼bug。

3.‘’‘ ****** ’‘’ 中的內容最好有格式一些,在HTML標籤後換行比較好。換行隨意的話,郵件裏偶爾會出現不可捉摸的亂碼。

發佈了25 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章