邮箱注册登录 之 发送邮箱 | 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的主要内容,如果未能解决你的问题,请参考以下文章

邮箱注册登录验证 | 模态对话框 | Django开发

Python入门自学进阶-Web框架——16Django登录/注册

Python入门自学进阶-Web框架——16Django登录/注册

django实现发送邮件功能

Django用户注册邮箱验证实践

10-邮箱注册登录文字总结 | Django