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 = 'abcdefg@qq.com' # 帐号
EMAIL_HOST_PASSWORD = 'migpwqgex123123123' # 密码(必须是授权码)
DEFAULT_FROM_EMAIL = 'jojo的奇幻冒险' #默认发件人
from audioop import reversefrom django.core.mail import send_mail, EmailMultiAlternatives
from django.shortcuts import render
from django.template import loader, Contextfrom axf import settings
from axf.settings import EMAIL_HOST_USER, EMAIL_HOST_PASSWORDdef 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_listhtml_content = t.render(data)msg = EmailMultiAlternatives(subject, html_content, from_email, to)msg.attach_alternative(html_content, "text/html")msg.send()
在template文件夹下新建mailtemplate.html文件(要发送的模板)
尊贵的{{ name }}男士,你好:
欢迎光临红浪漫,点击下面链接激活更多服(bao)务(jian)
    激活如果链接失效,请访问下方链接
    {{ url }}
配置urls.py文件 增加路由
#路由不用都加只加上 regist与activate就好
from django.conf.urls import url, includefrom app import viewsurlpatterns = [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\d+)/(?P\d+)/(?P\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=' + tokencache.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 = Trueuser.save()return redirect(reverse("app:login")) else:return HttpResponse('用户不存在')else:return HttpResponse('激活有效期已过')return None
结束了 这样就能发送邮件了 不要忘记配置邮箱
配置邮箱的链接https://www.cnblogs.com/zyj-python/p/7522471.html