天天看點

Django1.11.9 發送郵件與郵件激活本文部落客原創 第一次使用markdown編輯器好開心

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檔案

Django1.11.9 發送郵件與郵件激活本文部落客原創 第一次使用markdown編輯器好開心
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檔案(要發送的模闆)

Django1.11.9 發送郵件與郵件激活本文部落客原創 第一次使用markdown編輯器好開心
<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>送給來自星星的你</title>
</head>
<body>
<h1>尊貴的{{ name }}男士,你好:</h1>
    歡迎光臨紅浪漫,點選下面連結激活更多服(bao)務(jian)<br/>
&nbsp&nbsp&nbsp&nbsp<a href="{{ url }}" target="_blank" rel="external nofollow" >激活</a>
    如果連結失效,請通路下方連結<br/>
    &nbsp&nbsp&nbsp&nbsp{{ url }}

</body>
</html>
           

配置urls.py檔案 增加路由

Django1.11.9 發送郵件與郵件激活本文部落客原創 第一次使用markdown編輯器好開心
#路由不用都加隻加上 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中對應的函數

Django1.11.9 發送郵件與郵件激活本文部落客原創 第一次使用markdown編輯器好開心
@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"))
           
Django1.11.9 發送郵件與郵件激活本文部落客原創 第一次使用markdown編輯器好開心
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