配置
EMAIL_USE_SSL = True
?
EMAIL_HOST = 'smtp.qq.com'? # 如果是 163 改成 smtp.163.com
?
EMAIL_PORT = 465
?
EMAIL_HOST_USER = environ.get("EMAIL_SENDER") # 帳號(hào)
?
EMAIL_HOST_PASSWORD = environ.get("EMAIL_PWD")? # 授權(quán)碼(****)
?
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
?
注意:郵箱要開啟smtp服務(wù) 并且記錄授權(quán)碼
https://docs.djangoproject.com/zh-hans/2.0/topics/email/
筆記
為什么用
? 及時(shí)通知惠奸,還有郵箱驗(yàn)證等等
怎么用
修改setting.py 加入郵箱配置
EMAIL_USE_SSL = True
?
EMAIL_HOST = 'smtp.qq.com'? # 如果是 163 改成 smtp.163.com
?
EMAIL_PORT = 465
?
EMAIL_HOST_USER = "xxx@qq.com" # 帳號(hào)
?
EMAIL_HOST_PASSWORD = "xxxxx"? # 授權(quán)碼(****)
?
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
views里使用
普通單封郵件
def send_my_mail(req):
?? title = "阿里offer"
?? message = "恭喜您 成為我們公司CEO"
?? email_from = "1625211623@qq.com"
?? recs = ["17694871425@163.com", "569677884@qq.com", "ichenyouzhi@163.com"]
?? #發(fā)送郵件
?? send_mail(title, message, email_from, recs)
?? return HttpResponse("CEO開始嗨起來")
多封普通郵件的發(fā)送
def send_emailss(req):
?? title1 = "騰訊offer"
?? message1 = "恭喜您 被騙了"
?? email_from = "1625211623@qq.com"
?? title2 = "這是一封挑事的郵件"
?? message2 = "大哥大哥別殺我"
?? recs1 = ["17694871425@163.com",
? ? ? ? ?? "569677884@qq.com",
? ? ? ? ?? "ichenyouzhi@163.com"]
?? recs2 = ["17694871425@163.com",
? ? ? ? ? ? "569677884@qq.com",
? ? ? ? ? ? "ichenyouzhi@163.com",
? ? ? ? ? ? "m18742863100@163.com"]
?? senders1 = (title1, message1, email_from, recs1)
?? senders2 = (title2, message2, email_from, recs2)
?? send_mass_mail((senders1, senders2), fail_silently=False)
?? return HttpResponse("OK")
send_mail和send_mass_mail的區(qū)別
? send_mail每次都連接SMTP服務(wù)
? send_mass_mail 連一次就可以發(fā)多個(gè)
發(fā)送html的郵件
def email_html(req):
?? title = "阿里offer"
?? message = "恭喜您 成為我們公司CEO"
?? email_from = "493024318@qq.com"
?? recs = [
? ? ? ? ?? "liuda@1000phone.com",
?
? ? ? ? ?? ]
?? html_content = '{url}'.format(url=url)
?
?? msg = EmailMultiAlternatives(title,message, email_from, recs)
?? msg.attach_alternative(html_content, "text/html")
?? msg.send()
?? return HttpResponse("OK")
郵箱驗(yàn)證碼
? 1 生成驗(yàn)證碼
? 2 準(zhǔn)備郵件內(nèi)容 拼接驗(yàn)證url
? 3 發(fā)送郵件
? 4 拿到url里的那個(gè)token
? 5 改變郵箱對(duì)應(yīng)用戶的狀態(tài)
生成驗(yàn)證連接發(fā)送郵件
from django.core.mail import send_mail
from django.http import HttpResponse
from django.shortcuts import render
from email_verfiry import myutil
from django.core.cache import cache
# Create your views here.
def get_verify_code(req):
?? param = req.GET
?? email = param.get('email')
?? name = param.get('name')
?? #驗(yàn)證郵箱書寫規(guī)則合法性
?? #驗(yàn)證這個(gè)郵箱是否在我們的系統(tǒng)注冊(cè)過了
?
?? #生成驗(yàn)證碼
?? token = myutil.get_token()
?? #拼接驗(yàn)證連接
?? verify_url = "http://sharemsg.cn:12348/verify/" + token
?? # 保存驗(yàn)證碼
?? cache.set(token, email, 60)
?? # 發(fā)送郵件
?? title = "歡迎注冊(cè)1806會(huì)員"
?? message = "請(qǐng)將如下連接 復(fù)制到瀏覽器訪問{url}".format(
? ? ?? url=verify_url
?? )
?? email_from = "493024318@qq.com"
?? send_mail(title, message, email_from, [email])
?? return HttpResponse("注冊(cè)成功露戒,請(qǐng)查看激活郵件")
?
驗(yàn)證url的正確性
def verify(req, token):
?? email = cache.get(token)
?? if email:
? # 去數(shù)據(jù)庫(kù)找Email對(duì)應(yīng)人
? ? ?? return HttpResponse("修改用戶狀態(tài)井仰,可以使用"+email)
?? else:
? ? ?? return HttpResponse("驗(yàn)證鏈接不正確")