程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Django發送html郵件的方法

Django發送html郵件的方法

編輯:更多關於編程

       本文實例講述了Django發送html郵件的方法。分享給大家供大家參考。具體如下:

      在Django中,發送郵件非常的方便,一直沒有時間,今天來做一個小小的總結吧。

      我們常用的當然是通過send_mail發送郵件:

       代碼如下:

      send_mail(subject,message,from_email,recipient_list,fail_silently=False,auth_user=None,auth_password

    =None,connection=None)

      subject,message,from_email 和recipient_list 這四個參數是必須的。

      subject: 字符串,表示郵件標題。

      message: 字符串,表示郵件內容。

      from_email: 字符串,表示發件郵箱。

      recipient_list: 字符串列表,列表中每個成員都是一個郵箱地址,而且每個收件人都會在 “收件人/To:” 欄看到出現在recipient_list 中的其他收件人。

      fail_silently: (可選)布爾值。為False 時,send_mail 會拋出smtplib.SMTPException 異常。smtplib 文檔列出了所有可能的異常。這些異常都是SMTPException 的子類。

      auth_user: (可選)SMTP服務器的認證用戶名。沒提供該參數的情況下,Django會使用EMAIL_HOST_USER 配置項的設置。

      auth_password: (可選)SMTP服務器的認證密碼,沒提供該參數的情況下,Django會使用EMAIL_HOST_PASSWORD 配置項的設置。

      connection: (可選)發送郵件的後端。沒提供該參數的情況下,Django會使用默認後端的實例。

      以下是一個簡單的事例:

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 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,# 發件郵箱 recipient_list=mail_list, fail_silently=False, auth_user=EMAIL_HOST_USER, # SMTP服務器的認證用戶名 auth_password=EMAIL_HOST_PASSWORD, # SMTP服務器的認證用戶密碼 connection=None )

      用過的人可能會發現,你在template.html中的標簽,並沒有通過浏覽器的解析而顯示出來了。

      怎麼辦?我們要發送HTML郵件,Django當然是為你提供了好的解決方案的,請看下面一段代碼:

      ?

    1 2 3 4 5 6 7 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()

      看,很簡單吧,那麼現在我要稍稍的做一點點改動,我需要發送附件給收件人,只需要做一個簡單的修改即可:

      ?

    1 2 3 4 5 6 7 8 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') # 添加附件發送 msg.send()

      好了,到此為止,發送郵件已經結束了。不過,此時,需求變了,我在自己的網站上配置了多個發送郵件的用戶名和密碼,現在需要用我指定的用戶名和密碼給用戶發送郵件,該怎麼辦呢?請看下面的一段代碼:

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 from django.core.mail import EmailMultiAlternatives,get_connection from django.template import Context, loader conn = get_connection() # 返回當前使用的郵件後端的實例 conn.username = '[email protected]'# 更改用戶名 conn.password = 'my_email' # 更改密碼 conn.host = 'smtp.exmail.qq.com' # 設置郵件服務器 conn.open() # 打開連接 EMAIL_HOST_USER = '[email protected]' 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發送郵件 conn.close()# 發送完畢記得關閉連接

      看來,也不是很難吧!

      django.core.mail 的 get_connection()方法返回你當前使用的郵件後端的實例。

      代碼如下:

      get_connection(backend=None,fail_silently=False,*args, **kwargs)

      默認情況下,對 get_connection() 的調用會返回一個郵件後端實例,具體是哪個後端由EMAIL_BACKEND 配置項決定。如果指定了``backend`` 參數,就會對該後端進行實例化。

      友情提示:在發送的HTML郵件中包含圖片時,應該制定可以通過http訪問的地址。如:http://www.baidu.com/medias/xxx.png

      希望本文所述對大家的Python程序設計有所幫助。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved