Django 發送郵件與郵件激活
本文部落客原創 第一次使用markdown編輯器好開心
閑話少叙
修改settings.py 進行設定
EMAIL_USE_SSL = True #這裡要用SSL協定
EMAIL_USE_TLS = False
EMAIL_HOST = 'smtp.qq.com' # 如果是 163 改成 smtp.163.com
EMAIL_PORT = 465
EMAIL_HOST_USER = '[email protected]' # 帳号
EMAIL_HOST_PASSWORD = 'migpwqgex123123123' # 密碼(必須是授權碼)
DEFAULT_FROM_EMAIL = 'jojo的奇幻冒險' #預設發件人
建立sendemail.py檔案
from audioop import reverse
from django.core.mail import send_mail, EmailMultiAlternatives
from django.shortcuts import render
from django.template import loader, Context
from axf import settings
from axf.settings import EMAIL_HOST_USER, EMAIL_HOST_PASSWORD
def sendemial3(data,email):
title = '賬号激活'
email_template_name = 'mailtempalte.html'
t = loader.get_template(email_template_name)
mail_list = [email, ]
subject, from_email, to = title, EMAIL_HOST_USER, mail_list
html_content = t.render(data)
msg = EmailMultiAlternatives(subject, html_content, from_email, to)
msg.attach_alternative(html_content, "text/html")
msg.send()
在template檔案夾下建立mailtemplate.html檔案(要發送的模闆)
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>送給來自星星的你</title>
</head>
<body>
<h1>尊貴的{{ name }}男士,你好:</h1>
歡迎光臨紅浪漫,點選下面連結激活更多服(bao)務(jian)<br/>
    <a href="{{ url }}" target="_blank" rel="external nofollow" >激活</a>
如果連結失效,請通路下方連結<br/>
    {{ url }}
</body>
</html>
配置urls.py檔案 增加路由
#路由不用都加隻加上 regist與activate就好
from django.conf.urls import url, include
from app import views
urlpatterns = [
url(r'^index/', views.index,name='index'),
url(r'^index1/', views.index1,name='index1'),
url(r'^home/', views.home,name='home'),
url(r'^cart/', views.cart,name='cart'),
url(r'^market/', views.market,name='market'),
url(r'^market_response/(?P<typeid>\d+)/(?P<childid>\d+)/(?P<sortid>\d+)/$', views.market_response,name='market_response'),
url(r'^mine/', views.mine,name='mine'),
url(r'^login/', views.login,name='login'),
url(r'^regist/', views.regist,name='regist'),
url(r'^checkname/', views.checkname,name='checkname'),
url(r'^activate/', views.activate,name='activate'),
url(r'^logout/', views.logout,name='logout'),
]
views.py檔案中添加urls中對應的函數
@csrf_exempt
def regist(request):
if request.method == 'GET':
data = {
'tittle':'注冊'
}
return render(request,'user/regist.html',data)
if request.method == 'POST':
usrname = request.POST.get('username')
print(usrname)
password = request.POST.get('password')
encry_password = make_password(password)
# 可以使用正則進行 前端驗證
email = request.POST.get('emailas')
ip = request.META.get('REMOTE_ADDR')
icon = request.FILES.get('icon')
token = generate_token(ip, usrname)
print(token)
user = User(username=usrname, password=encry_password, email=email, icon=icon,u_token=token)
user.save()
url = 'http://127.0.0.1:8000/app/activate/?u_token=' + token
cache.set(token,user.id,300)
data = {
'email':email,
'name' : usrname,
'url' : url,
}
sendemial3(data,email) #調用此函數發送郵件
# user = User(username=usrname,password=password,email=email,icon=icon)
# user.save()
return redirect(reverse("app:login"))
def activate(request): #此函數主要用于激活郵箱
token = request.GET.get('u_token')
if(cache.has_key(token)):
id = int(cache.get(token))
user = User.objects.get(pk=id)
if(user):
user.active = True
user.save()
return redirect(reverse("app:login"))
else:
return HttpResponse('使用者不存在')
else:
return HttpResponse('激活有效期已過')
return None
結束了 這樣就能發送郵件了 不要忘記配置郵箱
配置郵箱的連結https://www.cnblogs.com/zyj-python/p/7522471.html