阿里云短信服务的使用-----获取短信验证码

这篇博客介绍了如何开通阿里云短信服务并使用Python SDK发送短信验证码。首先,介绍了开通服务、安装SDK和设置AK/SK的步骤,然后详细展示了如何封装发短信的代码,并在`SendSMSCode`类中实现短信发送逻辑,包括图片验证码验证和短信发送。最后,提到了后记内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开通阿里云短信服务

 

 

  • 申请签名和模板

 

 

  • 下载pythonSDK

pip install aliyun-python-sdk-core

  • 设置AK和SK

 

 

封装发短信代码utils/BaseView.py

  1. import json

  2.  
  3. from aliyunsdkcore.client import AcsClient

  4. from aliyunsdkcore.request import CommonRequest

  5. from syl.settings import ALY_ACCESSKEY_SECRET, ALY_ACCESSKEY_ID

  6.  
  7.  
  8. # phone = ""

  9. # phone_code = ""

  10. # data = {"code": phone_code}

  11.  
  12.  
  13. def send_sms(phone, data):

  14. # accessKeyId

  15. # accessSecret

  16. # cn-hangzhou

  17.  
  18. client = AcsClient('<ALY_ACCESSKEY_SECRET>', '<ALY_ACCESSKEY_ID>', 'cn-hangzhou')

  19.  
  20. request = CommonRequest()

  21. request.set_accept_format('json')

  22. request.set_domain('dysmsapi.aliyuncs.com')

  23. request.set_method('POST')

  24. request.set_protocol_type('https') # https | http

  25. request.set_version('2017-05-25')

  26. request.set_action_name('SendSms')

  27.  
  28. request.add_query_param('RegionId', "cn-hangzhou")

  29. request.add_query_param('PhoneNumbers', phone)

  30. request.add_query_param('SignName', "美多商城")

  31. request.add_query_param('TemplateCode', "SMS_185212884")

  32. request.add_query_param('TemplateParam', data)

  33.  
  34. response1 = client.do_action(request)

  35. # python2: print(response)

  36. res=json.loads(str(response1, encoding='utf-8'))

 

  • 短信发送和验证的逻辑

  • # verificationsapp/view.py 发送接口 #

  1. #verificationsapp/VIEW.PY

  2.  
  3. class SendSMSCode(APIView):

  4. def post(self, request):

  5. # 获取数据

  6. phone = request.data.get("phone")

  7. image_code = request.data.get("image_code")

  8. image_code_uuid = request.data.get("image_code_uuid")

  9. print('=====================', phone, image_code_uuid, image_code)

  10. # 验证数据

  11. if not all([phone, image_code, image_code_uuid]):

  12. return Response({"code": 4005, "msg": "参数不全"})

  13.  
  14. # 逻辑与入库

  15. # 3、验证图片验证码是否正确

  16. # 3.1连接redis

  17. redis_cli = get_redis_connection("img_code")

  18. # 3.2拿着uuid获取图片验证码

  19. redis_img_code = redis_cli.get(image_code_uuid).decode('utf-8')

  20. # 3.3比对redis里的code和发来的code是否一致

  21. if image_code.lower() != redis_img_code.lower():

  22. return Response({"code": 4009, "msg": "图片验证码错误"})

  23.  
  24. # 4、使用阿里云发送短信

  25. # 4.1准备手机验证码

  26. number = random.randint(100000, 999999)

  27. data = {"code": number}

  28. print(data)

  29. # 4.2使用封装好的接口发送短信

  30. send_sms(phone, data)

  31.  
  32. # 5.将短信验证码绑定并存入redis

  33. redis_cli.setex(phone, 60 * 60, number)

  34.  
  35. # 6.删除image_code

  36. redis_cli.delete(image_code_uuid)

  37.  
  38. return Response({"code": 0, "msg": "发送成功"})

后记

近期有很多朋友通过私信咨询有关Python学习问题。为便于交流,点击蓝色自己加入讨论解答资源基地

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值