【愚公系列】2022年01月 Django商城项目15-用户中心-发送邮件验证功能实现

【愚公系列】2022年01月 Django商城项目15-用户中心-发送邮件验证功能实现,第1张

【愚公系列】2022年01月 Django商城项目15-用户中心-发送邮件验证功能实现

文章目录

前言一、相关代码

1.业务逻辑相关代码2.celery发送邮件相关代码3.激活邮件相关代码


前言

邮箱进行验证主要是为了保证联系信息的有效性,方便您后续找回用户名、密码,同时也可以让您及时接收到系统的相关 *** 作消息。所以邮箱验证是很重要的一个功能。

一、相关代码 1.业务逻辑相关代码
class EmailView(LoginRequiredJSONMixin,View):

    def get(self,request):
        data = json.loads(request.body.decode())
        email = data.get('email')

        if not re.match(r'^[a-z0-9][w.-]*@[a-z0-9-]+(.[a-z]{2,5}){1,2}$',email):
            return http.JsonResponse({'code':RETCODE.PARAMERR,'errmsg':'参数错误'})

        try:
            request.user.email=email
            request.user.save()
        except Exception as e:
            return http.JsonResponse({'code':RETCODE.DBERR,'errmsg':'数据保存失败'})

        verify_url = active_email_url(email,request.user.id)
		# celery发送邮件
        from celery_tasks.email.tasks import send_active_email
        send_active_email.delay(email,verify_url)

        return http.JsonResponse({'code':RETCODE.OK,'errmsg':'ok'})
2.celery发送邮件相关代码
from django.core.mail import send_mail
from DJ_MeiDuo import settings
from celery_tasks.main import app

@app.task(bind=True)
def send_active_email(self,email,verify_url):

    # subject, message, from_email, recipient_list,
    # subject,   主题
    subject = '小徐商场激活邮件'
    # message,  邮件内容
    message = ''
    # from_email,  谁发送的
    from_email = settings.EMAIL_FROM
    # recipient_list, 收件人列表
    recipient_list = [email]
    # 有格式的内容
    html_message = '

尊敬的用户您好!

' '

感谢您使用小徐商城。

' '

您的邮箱为:%s 。请点击此链接激活您的邮箱:

' '

%s

' % (email, verify_url, verify_url) try: send_mail( subject=subject, message=message, from_email=from_email, recipient_list=recipient_list, html_message=html_message ) except Exception as e: self.retry(exc=e)

调用django的邮箱发送需要在setting下配置

# 指定邮件发送后端
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# 邮件服务器
EMAIL_HOST = 'smtp.qq.com'
# smtp 默认端口号是 25
EMAIL_PORT = 25
#发送邮件的邮箱
EMAIL_HOST_USER = '2528877987@qq.com'
#在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = '自己的授权码'
#收件人看到的发件人
EMAIL_FROM = '小徐商城<2528877987@qq.com>'

启动celery

celery -A celery_tasks.main worker -l info -P gevent


邮件发送成功

3.激活邮件相关代码
class EmailActiveView(View):

    def get(self,request):
        token = request.GET.get('token')
        if token is None:
            return http.HttpResponseBadRequest('缺少参数')
        user = check_email_active_token(token)
        if user is None:
            return http.HttpResponseBadRequest('没有此用户')
        user.email_active=True
        user.save()
        return redirect(reverse('users:center'))

至此邮件激活成功

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5711568.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-18
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存