django中邮箱验证这么写
2018-11-17 本文已影响0人
奶茶分你一半
django中的邮箱验证接口
from Mp
ps:本文为个人练手项目总结,若有不妥的地方望指正,防止误导人嘻嘻嘻
配置发送邮件的邮箱
在所用邮箱中开启pop3,smtp,imap的服务,并获取/设置授权码
这里以qq邮箱为例
登录qq邮箱,点击设置
![](https://img.haomeiwen.com/i14496426/a92728f11e72a851.png)
选到账户,滚动条向下拉
![](https://img.haomeiwen.com/i14496426/a7ac6455c86f966d.png)
找到两个有SMTP服务的东西,按图示开启
![](https://img.haomeiwen.com/i14496426/34828ab9ade03fb0.png)
点击总生成连接,获取授权码
在配置文件中设置邮箱的配置信息
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com' # 因为是示例为qq浏览器,所以这里是qq
EMAIL_PORT = 25
EMAIL_HOST_USER = '发送邮件的邮箱'
EMAIL_HOST_PASSWORD = '在邮箱中设置的客户端授权密码'
EMAIL_FROM = '略略略略略略' # 收件人看到的发件人
使用Django提供的模块发送邮件(建议使用celery)
下方代码写在celery中
send_mail(subject, message, from_email, recipient_list,html_message=None)
# subject 邮箱标题
# message 普通邮件正文,普通字符串
# from_email 发件人
# recipient_list 收件人列表
# html_message 多媒体邮件正文,可以说html的字符串
msg='<a href="想要发过去的验证链接" target="_blank">点我呀</a>'
send_mail('点我验证!','xxx',settings.EMAIL_FROM, ['接收人列表], html_message=msg)
下文以用户注册验证举例
在用户类中编写生成token和验证网址的链接的方法 generate_verify_email_url,由celery中调用
在用户类中编写验证token的方 法check_verify_email_token,由邮箱验证的视图函数调用
编写视图函数验证邮件
class VerifyEmailView(APIView):
"""邮箱认证"""
def get(self, request):
"""
:param request: 可用于获取查询字符串的请求
:return: {'message': 'OK'}
"""
# 获取token
token = request.query_params.get('token')
if not token:
return Response({'message': '缺少token'}, status=status.HTTP_400_BAD_REQUEST)
# 验证token
user = User.check_verify_email_token(token)
if user is None:
return Response({'message': '链接信息无效'}, status=status.HTTP_400_BAD_REQUEST)
else:
user.email_active = True
user.save()
return Response({'message': 'ojbk'})