Django 1.6html
雖然python提供了smtplib庫,來完成email的發送功能,可是django對其進行了封裝,使得發送郵件的接口變得更簡單,更方便,django的封裝位於django.core.mailpython
快速入門django
from django.core.mail import send_mail send_mail( 'Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False)
subject here:郵件的標題
here is message:郵件的內容,只能是字符串,簡單文本,要是想發送HTMl,多媒體。文件,後面會有專門的介紹
from@examplel:發送郵件者後端
[to@example.com]:接收郵件者,這是個列表,說明能夠同時發送給多我的服務器
須要注意的是,發送郵件時須要的 EMAIL_HOST , EMAIL_PORT ,EMAIL_HOST_USER , EMAIL_HOST_PASSWORD 須要settings設置,用來驗證SMTP服務器的。併發
還有一個須要注意的事,發送郵件時,內容的編碼。DEFAULT_CHARSET 由這個決定,也是在settings設置函數
send_mail()
編碼
send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None,auth_password=None, connection=None)spa
subject:郵件標題code
message: 內容
from_email: 誰發的郵件
recipient_list: 就是接收郵件者的列表
fail_silently=False:這個是用來顯示發送郵件時,默認是False,若是是False,則發送失敗時候,會拋出smtplib.SMTPException異常
auth_user=None:用來驗證SMTP server的用戶名,沒有設置就用settings裏的
auth_password=None:用來驗證SMTP server的密碼,沒有設置就用settings裏的
connection=None:這個用來設置具體發送郵件時時使用的鏈接後端,通常沒人會去動。默認確定使用django的發送郵件的後端了,詳見 Email backends
send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None,connection=None)
這個用來處理大規模的郵件
datatuple 這是一個元祖,((),()) 一個()像下面這樣
(subject, message, from_email, recipient_list) 參數就不說了吧,上面都講了
看下面的例子更好理解:
message1 = ('Subject here', 'Here is the message', 'from@example.com', ['first@example.com', 'other@example.com']) message2 = ('Another Subject', 'Here is another message', 'from@example.com', ['second@test.com']) send_mass_mail((message1, message2), fail_silently=False)
這兩個最大的不一樣就在於,
send_mail()發一個郵件,鏈接一次SMTP,意思就是一次發一次郵件找一次服務器去驗證下鏈接
send_mass_mail() 從上面的例子中能夠看出,好幾封郵件一次性就發出去了,效率更高。
mail_admins(subject, message, fail_silently=False, connection=None, html_message=None)
這是一個快速發給管理員郵件的方法
有一個問題是,管理員的郵件是什麼,在哪那?
就在settings裏
ADMINS = (
# ('Your Name', 'your_email@example.com')
)
subject:
這裏和上面說的差很少,但有點區別,就是發給管理員的郵件主題時,會帶個默認的前綴[django],你也能夠再settings裏設置 EMAIL_SUBJECT_PREFIX,設置一個你本身的前綴。
這個函數裏彷佛沒有from_mail,實際上是有的,在settings設置 SERVER_EMAI= 「」
最重要的是這個html_message:能夠爲這兩個值,text/plain, text/html 。看出來了吧,決定你發送郵件內容是什麼文本,你要是發個頁面帶鏈接,圖片的,html一些東西的,就得設置它了。
mail_managers(subject, message, fail_silently=False, connection=None,html_message=None)
其實和mail_admins()差很少,就是發給誰的問題,這個是針對一個鏈接失效時,指定一我的併發送郵件,須要作兩件事,一是在settings裏設置MANAGERS =(# ('Your Name', 'your_email@example.com')),另外一個是啓用中間件BrokenLinkEmailsMiddleware
下面是官方文檔上的兩個例子,好好體會:
send_mail( 'Subject', 'Message.', 'from@example.com', ['john@example.com', 'jane@example.com'] )
datatuple = ( ('Subject', 'Message.', 'from@example.com', ['john@example.com']), ('Subject', 'Message.', 'from@example.com', ['jane@example.com']), ) send_mass_mail(datatuple)
以上這些都是隻能發送簡單text類型的郵件,
除了那個mail_admins()和mail_managers()
若是想發送html類型,以及文件,附件類型的須要class EmailMessage,請看第二部分。