Django-發送郵件

概述

Python中內置了一個smtp郵件發送模塊,Django在此基礎上進行了簡單地封裝,讓咱們在Django環境中能夠更方便更靈活i的發送郵件。全部的功能都在django.core.mail中,經常使用的免費服務器有:16三、12六、QQ等。html

SSL和TLS

SSL:(Secure Socket Layer,安全套接字層)位於可靠的面向鏈接的網絡層協議和應用層協議之間的一種協議層。SSL經過互相認證、使用數字簽名確保完整性、使用加密確保私密性,以實現客戶端和服務器之間的安全通信。python

TLS:(Transport LayerSecurity,傳輸層安全協議),用於兩個應用程序之間提供保密性和數據完整性。算法

咱們一般所說的 HTTPS 協議,就是「HTTP 協議」和「SSL/TLS 協議」的組合。你能夠把 HTTPS 大體理解爲——「HTTP over SSL」或「HTTP over TLS」(反正 SSL 和 TLS 差很少)。瀏覽器地址欄的那把鎖指的就是SSL協議。django

TLS和SSL的關係:並列關係後端

  最新版本的TLS(Transport Layer Security,傳輸層安全協議)是IETF(Internet Engineering Task Force,Internet工程任務組)制定的一種新的協議,它創建在SSL 3.0協議規範之上,是SSL 3.0的後續版本。在TLS與SSL 3.0之間存在着顯著的差異,主要是它們所支持的加密算法不一樣,因此TLS與SSL 3.0不能互操做。瀏覽器

TLS的主要目標是使SSL更安全,並使協議的規範更精確和完善。TLS在SSL v3.0的基礎上,提供瞭如下增長內容:安全

  • 更安全的MAC算法
  • 更嚴密的警報
  • 「灰色區域」規範的更明確的定義

配置

首先,咱們須要一個本地SMTP服務器或者在項目setting.py中添加如下設置來配置一個外部SMTP服務器:服務器

  • EMAIL_HOST: SMTP服務器主機,默認爲localhost。
  • EMAIL_PORT: SMTP服務器端口,默認爲25。
  • EMAIL_HOST_USER: SMTP 服務器的用戶名。
  • EMAIL_HOST_PASSWORD: SMTP 服務器的密碼。
  • EMAIL_USE_TLS: 是否使用TLS安全鏈接,默認False。
  • EMAIL_USE_SSL: 是否使用SSL安全鏈接,默認False。

若是沒有本地SMTP服務器,可使用e-mail提供者的SMTP服務器。下面的簡單配置是經過QQ服務器發送e-mail的配置。網絡

# SMTP後端是Django的默認配置,若是要明確指定,請在settings中輸入如下內容
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.qq.com"  # SMTP服務器主機
EMAIL_PORT = 25             # 端口
EMAIL_HOST_USER = "695485***@qq.com"       # 發送郵件的郵箱
EMAIL_HOST_PASSWORD = "*********"    # #郵箱的受權密碼
EMAIL_USE_SSL= True
注意:

配置中,EMAIL_USE_TLS和EMAIL_USE_SSL都默認設置爲False,須要配置其中一個爲True,可是不能兩個都設置爲True。通常端口587對應TLS,端口465對應SSL。app

阿里雲默認禁用了25端口,使用465端口,EMAIL_USE_TLS=True

發送郵件

# 前面四個參數必需要寫,後面的參數能夠爲空
def send_mail(subject, message, from_email, recipient_list,
              fail_silently=False, auth_user=None, auth_password=None,
              connection=None, html_message=None):
  • subject:一個字符串,發送郵件的主題。
  • message:一個字符串,郵件內容。
  • from_email:一個字符串,收件人看到的發件人,能夠本身設定。
  • recipient_list:字符串列表,每一個字符串都是電子郵件地址。每一個成員能夠在收件人字段中看到其餘收件人。
# apps/utils/email_send.py
from django.core.mail import send_mail

def sendMail(request): 
    from_email = 'ray<695485075@qq.com>'
    msg = '<a href="http://127.0.0.1:8000/index/">點擊激活</a>'
    send_mail("註冊激活","",msg,from_email,recipient_list=['',])
    return HttpResponse("郵件已發送")
相關文章
相關標籤/搜索