django中的郵箱驗(yàn)證接口
from Mp
ps:本文為個(gè)人練手項(xiàng)目總結(jié)劲弦,若有不妥的地方望指正,防止誤導(dǎo)人嘻嘻嘻
配置發(fā)送郵件的郵箱
在所用郵箱中開啟pop3,smtp,imap的服務(wù)婶肩,并獲取/設(shè)置授權(quán)碼
這里以qq郵箱為例
登錄qq郵箱,點(diǎn)擊設(shè)置
選到賬戶,滾動(dòng)條向下拉
找到兩個(gè)有SMTP服務(wù)的東西此蜈,按圖示開啟
點(diǎn)擊總生成連接勿她,獲取授權(quán)碼
在配置文件中設(shè)置郵箱的配置信息
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com' # 因?yàn)槭鞘纠秊閝q瀏覽器袄秩,所以這里是qq
EMAIL_PORT = 25
EMAIL_HOST_USER = '發(fā)送郵件的郵箱'
EMAIL_HOST_PASSWORD = '在郵箱中設(shè)置的客戶端授權(quán)密碼'
EMAIL_FROM = '略略略略略略' # 收件人看到的發(fā)件人
使用Django提供的模塊發(fā)送郵件(建議使用celery)
下方代碼寫在celery中
send_mail(subject, message, from_email, recipient_list,html_message=None)
# subject 郵箱標(biāo)題
# message 普通郵件正文,普通字符串
# from_email 發(fā)件人
# recipient_list 收件人列表
# html_message 多媒體郵件正文,可以說html的字符串
msg='<a href="想要發(fā)過去的驗(yàn)證鏈接" target="_blank">點(diǎn)我呀</a>'
send_mail('點(diǎn)我驗(yàn)證之剧!','xxx',settings.EMAIL_FROM, ['接收人列表], html_message=msg)
下文以用戶注冊驗(yàn)證舉例
在用戶類中編寫生成token和驗(yàn)證網(wǎng)址的鏈接的方法 generate_verify_email_url郭卫,由celery中調(diào)用
在用戶類中編寫驗(yàn)證token的方 法check_verify_email_token,由郵箱驗(yàn)證的視圖函數(shù)調(diào)用
編寫視圖函數(shù)驗(yàn)證郵件
class VerifyEmailView(APIView):
"""郵箱認(rèn)證"""
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)
# 驗(yàn)證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'})