Django1.11.9 发送邮件与邮件激活

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 lang="en">
<head>
    <meta charset="UTF-8">
    <title>送给来自星星的你</title>
</head>
<body>
<h1>尊贵的{{ name }}男士,你好:</h1>
    欢迎光临红浪漫,点击下面链接激活更多服(bao)务(jian)<br/>
&nbsp&nbsp&nbsp&nbsp<a href="{{ url }}">激活</a>
    如果链接失效,请访问下方链接<br/>
    &nbsp&nbsp&nbsp&nbsp{{ 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

猜你喜欢

转载自blog.csdn.net/qq_31864971/article/details/86551086
今日推荐