django 1.6 發送郵件(一)

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(subjectmessagefrom_emailrecipient_listfail_silently=Falseauth_user=None,auth_password=Noneconnection=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()

send_mass_mail(datatuplefail_silently=Falseauth_user=Noneauth_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_mass_mail() 和 send_mail()

這兩個最大的不一樣就在於,

send_mail()發一個郵件,鏈接一次SMTP,意思就是一次發一次郵件找一次服務器去驗證下鏈接

send_mass_mail() 從上面的例子中能夠看出,好幾封郵件一次性就發出去了,效率更高。


mail_admins()

mail_admins(subjectmessagefail_silently=Falseconnection=Nonehtml_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()

mail_managers(subjectmessagefail_silently=Falseconnection=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,請看第二部分。

相關文章
相關標籤/搜索