邮件发送

# 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)
                    }
                })
posted @ 2021-03-31 17:12  乐乐乐乐乐乐樂  阅读(63)  评论(0)    收藏  举报
jQuery火箭图标返回顶部代码