1. 程式人生 > >Django實現傳送郵件功能

Django實現傳送郵件功能

最近用python寫了官網的後臺。官網的後臺功能比較簡單,一個多語言支援,一個聯絡我們,即給公司發郵件的功能。多語言支援的方式寫在另一篇部落格了。這裡先來說一說Django的傳送郵件功能。

其實python本身自帶了傳送郵件的功能,Django在其基礎上進行了封裝,使其更加簡單易用。僅僅幾行程式碼就可以實現傳送郵件的功能。
但是在實際開發的時候,遇到了兩個大坑,折騰了3天才真正搞定,在這裡做一個簡單的記錄和梳理,希望能幫其他小夥伴規避這些問題。

使用Django做傳送郵件的功能前,首先要有一個支援smtp協議的郵箱並檢查設定。**在這裡要控訴一下網易郵箱,163和126郵箱,都會強行把你要傳送的郵件判定為垃圾郵件,從而阻止傳送,所以這裡不建議使用。最好使用企業郵箱,付費的真的比較靠譜。**我這裡以騰訊企業郵箱作為示範:
1.登陸騰訊企業郵箱,進入設定--客戶端設定
2.確認SMTP服務是否開啟,如下圖:
3.若沒有開啟,記得開啟。然後看設定方法,下邊會用到。

這裡寫圖片描述

然後,要在settings.py檔案中配置郵箱相關引數:

# send e-mail
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'  #email後端
EMAIL_USE_TLS = False   #是否使用TLS安全傳輸協議
EMAIL_USE_SSL = True    #是否使用SSL加密,qq企業郵箱要求使用
EMAIL_HOST = 'smtp.exmail.qq.com'   #傳送郵件的郵箱 的 SMTP伺服器,這裡用了qq企業郵箱
EMAIL_PORT = 465     #發件箱的SMTP伺服器埠
EMAIL_HOST_USER = '[email protected]' #傳送郵件的郵箱地址 EMAIL_HOST_PASSWORD = '*********' #傳送郵件的郵箱密碼
最後,在views.py中製作一個簡單的demo郵件併發送:
from django.core.mail import send_mail  
# send_mail的引數分別是  郵件標題,郵件內容,發件箱(settings.py中設定過的那個),收件箱列表(可以傳送給多個人),失敗靜默(若傳送失敗,報錯提示我們)
send_mail('Subject here', 'Here is the message.'
, '[email protected]', ['[email protected]'], fail_silently=False)
如果一切正常,那麼郵件傳送已經成功了。但是我很蛋疼的遇到了問題,報錯顯示是語法錯誤....

大坑注意

我到達上一步的時候,報錯顯示語法錯誤,可是一共就幾行程式碼,檢查了幾遍也沒錯,怎麼回事呢?後來改用python自帶的smtp模組傳送,一步步除錯之後,發現問題在登陸郵箱的時候就失敗了。然後在大神的帶領下,使用Wireshark軟體抓包,發現登陸時,SMTP協議會收取本地計算機名稱,在這個名稱中,不能包含諸如橫槓"-",空格" "等字元,而我的本地計算機名稱包含了"-",並且公司的區域網路由器在主機名後邊加了帶空格的字尾“HDCP HOST”所以導致SMTP協議校驗失敗。
問題清除之後就好辦了,首先修改主機名,然後在設定ip地址的高階設定-DNS中,手動新增一個合法的DNS字尾即可。我這裡改為dhcp3

這裡寫圖片描述

修改之後,傳送成功~

接下來的事情就簡單了,在這個基礎功能上,優化多郵件傳送,還有HTML格式郵件的支援,這些內容都沒什麼坑,我就不贅述了,大家直接看[自強學堂的教程即可](http://www.ziqiangxuetang.com/django/django-send-email.html)


有時候很簡單的功能,也會牽扯到很複雜的問題,或者報錯資訊很難定位問題,這時候要大膽推測,小心求證,列舉各種可能性,一一檢查,最後總能搞定的。希望這篇blog能幫你避開大坑。

相關推薦

Django實現傳送郵件功能

最近用python寫了官網的後臺。官網的後臺功能比較簡單,一個多語言支援,一個聯絡我們,即給公司發郵件的功能。多語言支援的方式寫在另一篇部落格了。這裡先來說一說Django的傳送郵件功能。 其實pyt

node.js實現傳送郵件功能

準備事項 QQ郵箱設定:進入QQ郵箱->設定->賬戶->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務->開啟POP3/SMTP服務,並複製pass祕鑰 安裝nodemailer :npm install nodem

log4j實現傳送郵件功能

引言 最近預上線的一個機器人專案,因為這個專案中有很多的AI的東西,整個專案分為三部分組成,web工程——FS——NLU,整個web工程都是由我來負責,後面兩部分有大資料部門的東西負責,因為後面這兩部分對於我們貸後行業來說都是比較超前的,所以在整個連調的過程中會有很多的異常

實現傳送郵件功能

原文出自:www.hangge.com 轉載請保留原文連結:http://www.hangge.com/blog/cache/detail_792.html 使用MessageUI.framework框架除了可以傳送簡訊,還能傳送Email,步驟如下: (

JavaWeb中使用JavaMail實現傳送郵件功能例項詳解

現在很多的網站都提供有使用者註冊功能, 通常我們註冊成功之後就會收到一封來自注冊網站的郵件。郵件裡面的內容可能包含了我們的註冊的使用者名稱和密碼以及一個啟用賬戶的超連結等資訊。今天我們也來實現一個這樣的功能,使用者註冊成功之後,就將使用者的註冊資訊以Email的形式傳送到使

JAVA實現傳送郵件功能

/** * 傳送郵件功用方法 * @param mailTo * @param html * @param userName */ public void sendEmployeeCommon(String mailTo , String html , Stri

thinkphp5中使用phpmailer實現傳送郵件功能

一、開啟SMTP服務(使用php傳送郵件需要用到SMTP服務,這裡以163郵箱的SMTP服務為例)。 1.登入163郵箱,在首頁上找到“設定”。 2.選擇開啟的服務,一般都全選,POP3/SMTP/IMAP,開啟SMTP服務就得先開通客戶授權碼。 3.點選開通客戶授權

thinkphp5中使用phpmailer實現傳送郵件功能 及自己遇到的坑

一、開啟SMTP服務(使用php傳送郵件需要用到SMTP服務,這裡以163郵箱的SMTP服務為例)。 1.登入163郵箱,在首頁上找到“設定”。 2.選擇開啟的服務,一般都全選,POP3/SMTP/IMAP,開啟SMTP服務就得先開通客戶授權碼。 3.點選

Flask實現傳送郵件功能

郵件服務用途較多,如:註冊時驗證使用者、找回密碼、線上程式出現重大bug時觸發郵件提醒以及伺服器關鍵資料(CPU、網路、記憶體)監控提醒等,可以說隨處可以用到,下面講解了一個使用flask_mail實現的郵件傳送功能,有完整程式碼,測試可行。首先下載依賴庫flask_mail

C# 傳送郵件功能實現

郵件傳送功能在OA以及一些網站驗證中很常用。下面是郵件傳送的一個函式,引數傳入收件人地址,郵件主題,郵件內容,讀者可根據自己的需求新增郵件的附件或者抄送人等。  /// <summary> /// 傳送郵件 /// </su

SSM 框架整合 spring 傳送郵件功能實現

基於SSM的 spring 傳送郵件的實現 由於考慮到專案中需要,如果程式出現異常或其它問題,可以傳送郵件來及時提醒後臺維護人員處理。所以目前考慮使用JavaMail來實現郵件傳送!如下,是我整理的一些內容,做個筆記記錄下:(當然,在這功能實現之前,需要搭建好

ASP.NET自動傳送郵件功能實現

實現傳送郵件功能 首先說一下在.Net下如何傳送郵件。.Net已經為我們準備好了與傳送郵件相關的類,只要直接呼叫即可,非常方便。下面是我自己寫的一個郵件通知類: ///<summary> ///郵件通知服務類。 ///</summary> publi

Jenkins+maven+git 實現自動構建、許可權管理、靜態程式碼檢測、遠端部署、傳送郵件功能

Jenkins配置 1. 使用者許可權設定 配置->Configure Global Security (注:想讓匿名使用者可以瀏覽jenkins網站 需勾選Overall 中的read 和 Job

SpringBoot 傳送郵件功能實現

背景 有個小夥伴問我你以前發郵件功能怎麼弄的。然後我就給他找了個demo,正好在此也寫一下,分享給大家。 理清痛點 傳送郵件,大家可以想一下,坑的地方在哪? 我覺得是三個吧。 第一:郵件白名單問題。 第二:郵件超時問題。 第三:郵件帶附件問題。 我下面的demo都會介紹這些問題及解決。 實現方案 準備工作 我

linux系統搭建郵件服務,實現收發郵件功能

hat6 傳輸代理 windows vol 解決 tex proc 域名空間 named 搭建postfix郵件系統服務互聯網中的電子郵件系統並不是一個孤立的體系,需要DNS服務器提供郵件域的解析,郵件收取,傳遞等功能也是由不同的組件來提供的。郵件系統的角色MTA(郵件傳輸

PHP 實現下載郵件功能,保存為eml格式

eml info html 功能 騰訊企業郵箱 toe 技術 處理 htm 引言:因為業務需求,需要獲取訂單的往來郵件,其中涉及到下載郵件功能。由於騰訊企業郵箱API接口不支持下載郵件功能,只能自己寫。 獲取郵件內容,保存到數據庫 步驟略:網上有很多現成的,利用ima

django實現分頁功能

在個人部落格或者網站上,我們發表文章經常會對部落格進行分頁,下面程式碼用django實現: django有它自帶的分頁功能:Paginator 不過我們用在它基礎上開發的另一個包:django-pure-pagination  先了解一下這個包特性: 1、使用與django.core相同的A

django實現搜索功能

形式 blank 輸入關鍵詞 default 輸入 fault ins form orf 實現功能:用戶在搜索框輸入關鍵詞,過濾出帶有關鍵詞的文章。 新聞模型如下: models.py class Notices(models.Model): Category_L

java實現傳送簡訊功能

1、在阿里雲簡訊服務中添加簽名 2、在阿里雲簡訊服務中新增模板 3、建立屬於自己的AccessKey ID和Access Key Secret 4、需要下載兩個jar包                   &nb

單純java程式碼實現傳送郵件

 這個是工具類直接執行main方法就可以傳送郵箱,細節方面看我另一篇文章 https://mp.csdn.net/postedit/84307897 package com.bgs.controller; import javax.mail.Authenticator