前言
我們大家應該都知道python中smtplib模塊用于郵件的功能,而django對這個這模塊進行封裝,使得它使用起來十分簡單。 django.core.mail就是django郵件的核心模塊。下面話不多說了,來隨著小編來一起看看詳細的介紹吧。
兩個常用函數
它提供了兩個函數,使用起來十分的簡單:
def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, connection=None, html_message=None): pass def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None, connection=None): pass# 參數介紹 # subject: 郵件主題 # message: 郵件內容 # from_email: 發件人 # recipient_list: 收件人,這是一個列表,可以有多個收件人 # 以上4個在參數 在send_mass_mail中,會寫在datatuple這個元組中 # fail_silently: 是否報錯,True的話表忽略異常 # auth_user&auth_password:賬號密碼 # connection: 表示這個的鏈接對象,后續會提到 # html_message: send_mail方法獨有,可以比較簡單地實現一個html文本的傳輸,具體我也沒使用過,不是很了解。
一般情況下,我們需要在setting中進行配置,除了必須配置的host和port,一般我們也將賬號密碼寫在這里,這樣每次調用函數就不用傳遞這兩個參數,當不傳遞這兩個值,他們就會默認去讀取setting中的值
返回值是成功發送了多個message,而不是多少個人,一般使用send_mail,都返回1
# settings.py# 我使用的是新浪的,host可以在對應郵箱的設置中找到EMAIL_HOST = 'smtp.sina.com'EMAIL_PORT = 25# 你的郵箱賬號與密碼EMAIL_HOST_USER = 'viptestfordjango@sina.com'EMAIL_HOST_PASSWORD = '******'# 由于使用25端口,一般都不使用TLS機密,SSL和TSL只需要設置一個,他們同時為True或FalseEMAIL_USE_TLS = False# 發件人,只有這個變量名可以自己自定義,設置在這里是為了減少每次去寫EMAIL_FROM = 'viptestfordjango@sina.com'
實例
from django.core.mail import send_mail, send_mass_mailfrom string import lowercase,uppercase,digitsfrom random import randintfrom project.settings import EMAIL_FROMdef send_code_email(email): """ 發送驗證碼 """ # 0-9 a-z A-z code = '' seeds= lowercase+uppercase+digits length = len(seeds) # 生成4位驗證碼 for i in range(4): code += seeds[randint(0, length-1)] send_title = '重置密碼' send_message = '你的驗證碼是:{0}。'.format(code) send_status = send_mail(email_title, email_body, EMAIL_FROM, [email])def send_hello_email(email1, email2): """ 給email1發送 新年好 給email2發送 Happy New Year """ # message格式(subject, message, from_email, recipient_list) message1 = ('新年好', '新年好', 'EMAIL_FROM', [email]) message2 = ('Happy New Year', 'Happy New Year', EMAIL_FROM, [email2]) send_status=send_mass_mail((message1, message2), fail_silently=False)
新聞熱點
疑難解答