1. 程式人生 > >Django專案之傳送郵件

Django專案之傳送郵件

傳送郵件配置資訊

Django中內建了郵件傳送功能,被定義在django.core.mail模組中。傳送郵件需要使用SMTP伺服器,常用的免費伺服器有:163126QQ,下面以163郵件為例。

1)登入後設置-POP3/SMTP/IMAP。

2)在新頁面中點選“客戶端授權密碼”,勾選“開啟”,彈出新視窗填寫手機驗證碼。

3)填寫授權碼。

4)提示開啟成功。
5 ) 在Django配置檔案中,設定郵箱的配置資訊

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# 其他郵箱伺服器地址和埠,自行百度
EMAIL_HOST =
'smtp.163.com' EMAIL_PORT = 25 #傳送郵件的郵箱 EMAIL_HOST_USER = '[email protected]' #在郵箱中設定的客戶端授權密碼 EMAIL_HOST_PASSWORD = 'python123' #收件人看到的發件人 EMAIL_FROM = 'python<[email protected]>'

6 ) 使用Django提供的模組傳送郵件
django.core.mail模組提供了send_mail來發送郵件。
send_mail(subject, message, from_email, recipient_list

,html_message=None)

  • subject 郵件標題
  • message 普通郵件正文, 普通字串
  • from_email 發件人
  • recipient_list 收件人列表
  • html_message 多媒體郵件正文,可以是html字串

非同步傳送郵件

傳送驗證郵件屬於耗時操作,同樣可以使用celery中非同步執行

1. 在專案根目錄下建立celery_tasks

2. 在celery_tasks目錄下建立config.py檔案,用於儲存celery的配置資訊

broker_url = "redis://127.0.0.1/14"

3. 在celery_tasks目錄下建立main.py檔案,用於作為celery的啟動檔案

from celery import Celery
import os

# 為celery使用django配置檔案進行設定
if not os.getenv('DJANGO_SETTINGS_MODULE'):
	os.environ['DJANGO_SETTINGS_MODULE'] = '專案名稱.settings.dev'

# 建立celery應用
app = Celery('隨便起名')

# 匯入celery配置
app.config_from_object('celery_tasks.config')

# 自動註冊celery任務
app.autodiscover_tasks(['celery_tasks.email'])

4. 在celery_tasks目錄下建立email

5. 在email目錄下建立email/tasks.py檔案(檔名必須是tasks),用於儲存傳送郵件的非同步任務

from celery_tasks.main import app
import logging
from django.core.mail import send_mail
from django.conf import settings

# 獲取在配置檔案中定義的logger,用來記錄日誌
logger = logging.getLogger("django")


@app.task(name="send_verify_email")
def send_verify_email(token, email):
	"""
	傳送郵件
	:param token: 加密token值
	:param email: 簡訊驗證碼
	:return: None
	"""
	verify_url = 'http://域名和埠/success_verify_email.html?token=' + token
	to_email = email
	subject = "XX公司郵箱驗證"
	html_message = '<p>尊敬的使用者您好!</p>' \
	               '<p>感謝您使用XX產品。</p>' \
	               '<p>您的郵箱為:%s 。請點選此連結啟用您的郵箱:</p>' \
	               '<p><a href="%s">%s<a></p>' % (to_email, verify_url, verify_url)
	try:
		send_mail(subject=subject,  # 郵件標題
		          message="",  # 普通郵件正文
		          from_email=settings.EMAIL_FROM,  # 發件人
		          recipient_list=[to_email],  # 收件人
		          html_message=html_message  # 多媒體郵件正文
		          )
	except Exception as e:
		logger.error("傳送郵件[異常][email: %s, message: %s ]" % (email, e))

6. 檢視中呼叫非同步傳送郵件

# 虛擬碼 非同步任務函式名.delay(引數1, 引數2)
send_verify_email.delay(token, email)

7.進入虛擬環境,切換到celery_tasks資料夾路徑下,開啟非同步

celery -A celery_tasks.main worker -l info

引數解釋:

  • -A celery_tasks.main 指定啟動檔案
  • worker 建立任務執行者
  • -l info 檢視詳細執行過程

相關推薦

Django專案傳送郵件

傳送郵件配置資訊 Django中內建了郵件傳送功能,被定義在django.core.mail模組中。傳送郵件需要使用SMTP伺服器,常用的免費伺服器有:163、126、QQ,下面以163郵件為例。 1)登入後設置-POP3/SMTP/IMAP。 2)在新頁面中點

Maven座標、依賴的介紹傳送郵件示例專案

什麼是座標? 最早聽到座標是在數學幾何中,比如在一個平面座標系中(X、Y),表示該平面上與X軸的距離為Y,與Y軸的距離為X的一點, 任何一個座標都能夠唯一標識該平面中的一點。在實際生活中,比如說網上購物,你在下訂單的時候寫上家庭住址,然後快遞員 就能夠根據地址送貨上門,其實

程式碼珍藏傳送郵件

/** * 傳送重置密碼郵件 * @return */ @RequestMapping(params="sendResetPwdMail") @ResponseBody public AjaxJson sendResetPwdMail(String email,HttpServletRequest reque

Django專案部署

1. 靜態檔案 當Django執行在生產模式時,將不再提供靜態檔案的支援,需要將靜態檔案交給靜態檔案伺服器。 我們先收集所有靜態檔案。專案中的靜態檔案除了我們使用的front_end_pc中之外,django本身還有自己的靜態檔案,如果rest_framewor

Django專案FastDFS檔案儲存系統

0. 使用Docker安裝FastDFS 1. FastDFS的Python客戶端 安裝 安裝fdfs_client-py-master.zip到虛擬環境中 pip install fdfs_client-py-master.zip pip install

Django專案CKEditor富文字編輯器

1. 安裝 pip install django-ckeditor 2. 新增應用 在INSTALLED_APPS中新增 INSTALLED_APPS = [ ... 'ckedito

monkeyrunner入門傳送郵件(四)

這裡我已Gmail為例,道理都是一樣的 device.touch裡面的數字是手機螢幕的座標,手機螢幕的座標這樣得知: 開啟設定–系統—開發者選項–指標座標 device.type模擬鍵盤輸入內容 提供可複製程式碼: #coding:utf-8 #儲存檔案格式記得選擇utf-8

Django+Celery非同步傳送郵件

安裝 pip install django==1.11.7 pip install celery 專案目錄 AXF ├── alipay_config │   ├── alipay_rsa_public_key.pem │   └──

Nodejs傳送郵件nodemailer

nodejs郵件模組nodemailer的使用說明 1.介紹      nodemailer是node的一個傳送郵件的元件,其功能相當強大,普通郵件,傳送附件,郵件加密等等都能實現,而且操作也十分方便。 nodemailer在GitHub上的專案地

django 中 SMTP 傳送郵件配置

QQ郵箱傳送郵件 登入 qq 郵箱, 點選設定,進入賬戶  開啟服務:  django 專案中的 setting 檔案中新增配置程式碼: # qq IMAP/SMTP 配置 EMAIL_BACKEND = 'django.core.mail.b

Jenkins持續整合傳送郵件

最近專案中需要實現Jenkins上構建完成後自動傳送郵件,在網上搜了一些資料,多多少少有些問題,現在把自己的經驗分享一下。 大概步驟:系統管理—>系統設定—>郵件通知 點選高階,下面

用java開發Email工具傳送郵件

  作者:馮睿 本文介紹瞭如何利用Java的網路API來實現一個電子郵件工具程式。通常Email工具都是使用SMTP(簡單郵件傳輸協議, Simple Mail Transfer Protocol)來傳送郵件,使用POP3協議來接受電子郵件。在本文中只對這兩個協議作簡單介紹。

Web應用安全傳送郵件

To為收件人,Subject為標題,From為發件人地址。郵件頭注入的主要原因與HTTP訊息頭注入漏洞類似。訊息頭中各欄位以換行符分開,因此,如果能夠在外界傳入的引數插入換行符,那麼就可以新增新的訊息頭

django 中的各種郵件傳送

修改setting.py 加入郵箱配置 1 EMAIL_USE_SSL = True #是否使用加密 2 3 EMAIL_HOST = 'smtp.qq.com' #smtp伺服器, 如果是 163 改成 smtp.163.com 4 5 EMAIL_PORT

Django系列第一個專案搭建

一、安裝   (1)使用pip3 install django在控制檯安裝django;   (2)新增到環境變數    二、建立專案   方式1:通過命令建立  (1)建立project: 通過django-admin.py startproject mysite: mysite為自己的專案名稱

【SSH網上商城專案實戰25】使用java email給使用者傳送郵件

      當用戶購買完商品後,我們應該向使用者傳送一封郵件,告訴他訂單已生成之類的資訊,郵箱地址是從使用者的基本資訊中獲取,好了,首先我們來看一下java中傳送郵件的方法。

測試開發Django——No5.Django專案的部署(CentOS7+nginx)

配置環境:CentOS7   1.安裝python3環境 預設的CentOS7系統中,會安裝python2.7的版本,由於Django2.0並不支援python2.7的版本,所以我們需要自己在系統中安裝python3的版本。 ① 安裝wget工具,用於在網上下載檔案 這樣代表,我的系統

ubuntu Django專案後臺不掛斷執行screen命令

1、安裝screen apt install screen 2、新建一個screen screen -S web 這樣就會新開一個視窗。cd到你需要的目錄然後輸入你想輸入的命令。輸入: python manage.py runserver 0.0.0.0:80

Linux學習筆記Django專案以程序的形式在後臺啟動(CentOS)

body { background: #f4f4f4 } .title { width: 100%; background: #5cb85c; padding: 5px; font-size: 20px; margin: 5px } .sub_title { width: 99%; background: #

django 傳送郵件配置

拿qq郵箱當做發件箱舉例子,首先配置郵箱 在qq郵箱的賬戶設定裡面設定如下   得到第三方登陸授權碼 setting.py中設定如下: # 傳送郵件設定 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBac