邮箱注册登录 之 发送邮箱 | Django
Posted 胡说八道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了邮箱注册登录 之 发送邮箱 | Django相关的知识,希望对你有一定的参考价值。
# 邮箱注册登录||发送邮箱激活链接,激活账号; # 逻辑: # 在后台自动生成若干个验证码数字,保存到数据库中,并放置到发送内容中链接 # 的尾部,用户点击链接,提取url后面数字,与数据库中数据比对,正确就验证通过; # utils文件夹下:email_send.py def generate_random_str(num): """随机生成字母与数字的验证码""" code = ‘‘ for i in range(num): # 随机数字 random_num = random.randrange(10) # 随机字母 random_alp = random.randrange(65,91) add = random.choice([random_num, random_alp]) code+=str(add) return code def send_register_email(email, type="register"): """定义发送注册验证邮件的函数""" email_record = EmailVerifyRecord() # 随机获取一个16位长的字符 code = generate_random_str(16) # 将发送的验证code先保存到数据库中 email_record.code = code email_record.email = email email_record.send_type = send_type email_record.save() # 发送邮件 email_title = "" email_body = "" # 判断发送邮件的类型 if type == "register": email_title = "慕学在线网注册激活链接" email_body = """ 请点击下面的链接激活你的账号: http://127.0.0.1:8000/active/{0} """.format(code) # django内置发送邮件的函数 from django.core.mail import send_mail # 接受send_mail()函数返回的布尔值 send_status = send_mail(email_title,email_body,EMAIL_FORM,[email]) # send_mail()函数的参数: # subject(title),message(内容),from_email,recipient_list(邮件列表的)... if send_status: # 如果发送成功 pass # 邮箱服务设置中的SMTP服务器,开启服务状态 # django内置的send_mail()函数需要在系统设置中配置参数 EMAIL_HOST = "smtp.sina.com" # 复制相关邮箱客户端SMTP服务器的地址 EMAIL_PORT = 25 EMAIL_HOST_USER = "公司邮箱@sina.com" EMAIL_HOST_PASSWORD = "*****密码" EMAIL_USE_TLS = False EMAIL_FROM = "公司邮箱@sina.com" # views.py class RegisterView(View): """注册""" def get(self, request): register_form = RegisterForm() return render(request, "register.html", { ‘register_form‘:register_form }) def post(self, request): from django.core.urlresolvers import reverse from django.shortcuts import redirect register_form = RegisterForm(request.POST) if register_form.is_valid(): # 如果验证通过,获取表单数据 user_name = request.POST.get(‘email‘, ‘‘) pass_word = request.POST.get(‘password‘, ‘‘) user_profile = UserProfile() user_profile.username = user_name user_profile.email = user_name from django.contrib.auth.hashers import make_password user_profile.password = make_password(pass_word) # 将注册未激活的信息保存到数据库 user_profile.save() # 发送邮箱激活信息 from utils.email_send import send_register_email # 传入邮箱及发送方式 send_register_email(user_name, "register") return redirect(reverse(‘login‘)) else: return render(request, "register.html", {‘register_form‘:register_form})
以上是关于邮箱注册登录 之 发送邮箱 | Django的主要内容,如果未能解决你的问题,请参考以下文章
Python入门自学进阶-Web框架——16Django登录/注册