# Django +vue 验证码发送
```python
#导包
from django.core.mail import send_mail
from web.settings import DEFAULT_FROM_EMAIL #settings里的一些配置
import random
#settings配置具体如下:
EMAIL_USE_SSL = True # Secure Sockets Layer 安全套接层, 取决于邮件服务器是否开启加密协议
EMAIL_HOST = 'smtp.qq.com' # 邮件服务器地址
EMAIL_PORT = 465 # 邮件服务器端口
EMAIL_HOST_USER = '1315532054@qq.com' # 登陆邮件服务器的账号
EMAIL_HOST_PASSWORD = 'ownkpkdkumubhdjg' # 登陆邮件服务器的密码
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER # 邮件的发送者
#获取随机6位字符
def get_random_str():
a_=list([chr(var) for var in range(97,123)])
A_=list([chr(var) for var in range(65,91)])
num_=[str(var) for var in range(0,9)]
return ''.join(random.sample(a_+A_+num_,6))
#邮件发送
class send_verify(APIView):
'''
1. 先检查 对应邮件是否再memcache里已经存在了验证码
2. 发现没有存在,那么需要生成6位随机字符
3. 存储入到memcache里,并设置60s的过期时间
email: 6str :60s
遇到了同步发送邮件的问题,应该怎么办
'''
def post(self,request):
email=request.data['email']
# email=request.POST.get('email')
# 1. 先检查 对应邮件是否再memcache里已经存在了验证码
token=men.get(email)
#2.如果没有存在,那么需要生成随机字符
if token:
return Response({
'code':0,
'message':'该邮箱已存在验证码'
})
else:
#该邮箱没有,生成随机字符
token=get_random_str() #随机字符
subject='实验楼。。。。。。。。。。。'
message='你的验证码是:%s'%token
men.set(email,token,100) #存储到memcache
# print(men.get(token))
send_mail(subject,message,DEFAULT_FROM_EMAIL,[email])
return Response({
'code':1,
'message':'验证码已发送'
})
send_verify(){
if(!this.email){
return
}
let form_data=new FormData()
form_data.append('email',this.email)
axios({
url:'http://127.0.0.1:8000/api/send_verify/',
method:'post',
data:form_data
}).then(res=>{
if(res.data.code==1){
alert(res.data.message)
}
})