前言

吐槽,最近需要用到短信验证功能,于是选择了阿里云短信,由于是python3项目,无奈阿里云竟然没有对应python3的实现,此处贴出代码,备忘 ~~!

python3实现

# -*- coding: utf-8 -*-

# pip install requests

import requests

import urllib.request

import time

import uuid

import hmac

import base64

import datetime

import json

def params(accesskeyid, mobiles, tpl_code, tpl_params, sign_name):

p = [

["SignatureMethod", "HMAC-SHA1"],

["SignatureNonce", uuid.uuid4().hex],

["AccessKeyId", accesskeyid],

["SignatureVersion", "1.0"],

["Timestamp", time_now_fmt()],

["Format", "JSON"],

["Action", "SendSms"],

["Version", "2017-05-25"],

["RegionId", "cn-hangzhou"],

["PhoneNumbers", "{0}".format(mobiles)],

["SignName", sign_name],

["TemplateParam", json.dumps(tpl_params, ensure_ascii=False)],

["TemplateCode", tpl_code],

["OutId", "123"],

]

return p

def time_now_fmt():

r = datetime.datetime.utcfromtimestamp(time.time())

r = time.strftime("%Y-%m-%dT%H:%M:%SZ", r.timetuple())

return r

def special_url_encode(s):

r = urllib.parse.quote_plus(s).replace("+", "%20").replace("*", "%2A").replace("%7E", "~")

return r

def encode_params(lst):

s = "&".join(list(map(

lambda p: "=".join([special_url_encode(p[0]), special_url_encode(p[1])]),

sorted(lst, key=lambda p: p[0])

)))

return s

def prepare_sign(s):

r = "&".join(["GET", special_url_encode("/"), special_url_encode(s)])

return r

def sign(access_secret, prepare_str):

k = "{0}{1}".format(access_secret, "&")

r = hmac.new(k.encode(), prepare_str.encode(), sha1).digest()

base_str = base64.b64encode(r).decode()

return special_url_encode(base_str)

def _send_sms_ali(mobiles, tpl_code, tpl_params):

prefix_url = "https://dysmsapi.aliyuncs.com/?"

accesskeyid = "xxxxx"

accesssecret = "xxxxx"

sign_name = "xxxxx"

params_lst = params(accesskeyid, mobiles, tpl_code, tpl_params, sign_name)

eps = encode_params(params_lst)

prepare_str = prepare_sign(eps)

sign_str = sign(accesssecret, prepare_str)

url = "{0}Signature={1}&{2}".format(prefix_url, sign_str, eps)

r = requests.get(url)

if r.status_code != 200:

return False

else:

jn = json.loads(r.text)

if jn.get("Code") == "OK":

return True

else:

return False

if __name__ == "__main__":

# 签名校验测试,与测试样例一致,待拿到正式参数时再做测试修改

_tpl_code = "SMS_120785003"

_tpl_params = {"code": "0000"}

_send_sms_ali("150xxxxxxxxx,177xxxxxxxx", _tpl_code, _tpl_params)

qpython3h手机版怎么发短信_阿里云短信 python3代码发送短信相关推荐

  1. qpython3h手机版怎么发短信_python如何使用腾讯云发送短信

    腾讯云方面的申请和流程都比较简单,基本都是可视化操作的,这里就不在赘述了.这篇文章着重讲解怎么用python实现调用. 我假设你已经满足了以下几个前提 + 已经开通了腾讯云短信业务 + 创建好了短信签 ...

  2. 小程序群发短信,借助云开发5行代码实现短信群发功能

    我们上面给单个手机发送验证码的功能实现了,接下来就教大家如何群发短信. 老规矩,先看效果图 1,编写wxml页面 简单起见,我这里只定义一个输入手机号的输入框和一个button按钮 对应的代码如下 2 ...

  3. 商用短链平台_第8章_ 账号微服务注册模块+短信验证码+阿里云OSS开发实战

    商用短链平台_第8章_ 账号微服务注册模块+短信验证码+阿里云OSS开发实战 文章目录 商用短链平台_第8章_ 账号微服务注册模块+短信验证码+阿里云OSS开发实战 第八章 账号微服务注册模块+短信验 ...

  4. Java实现短信验证码(阿里云短信服务)

    前言: 很多时候我们做的项目都需要上图这样的验证码来帮助我们完成更好的功能,比如:什么登录注册,忘记密码需要发送手机验证码之类的啊...下面分享我今天通过阿里云短信服务实现的短信验证码,操作都很简单, ...

  5. 张勇发全员信:阿里云将分拆上市;ChatGPT官方iOS应用上线,支持中文语音;Bun 0.6发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  6. winxp怎么登陆云服务器_阿里云ECS云服务器能否导入使用自己本地windows7或winxp操作系统镜像?...

    阿里云服务器理论上是可以导入自己本地制作的操作系统镜像的.但操作难度和技术要求非常高,限制也很多,仅适合有特殊需求且有专业能力或者经济实力的用户采用这种方式.一般用户推荐使用官方的系统镜像或镜像市场里 ...

  7. 云短信使用——阿里云短信使用步骤

    云短信使用 阿里云短信使用步骤: <1>点击进入阿里云免费试用 , 然后登陆账号. <2> 如图选择短信0元试用 (已经领取过的,直接走第三步即可.) <3>点击进 ...

  8. 阿里云盘如何分享压缩包_阿里云盘能分享压缩包吗?

    网盘的分享功能可以说是我们使用最多的功能之一,大家都知道百度网盘的功能很强大,不仅可以分享软件.视频.文档.还可以分享压缩包,但是由于百度网盘的尿性大家心里都清楚,现在大家都已经开始转战不限速的阿里云 ...

  9. 通达信手机版指标源码大全_通达信指标公式源码短炒买卖指标

    做价值的传播者,一路同行,一起成长 问题:怎样才能每天都收到这类文章! 答案:只需点击上方<通达信指标公式软件> VAR1:=((CLOSE-MA(CLOSE,6))/MA(CLOSE,6 ...

  10. i国网app苹果版_阿里云盘app苹果版 -阿里云盘app官方手机版下载

    阿里云盘app苹果版:阿里云盘,更智能化的云存储.阿里云盘是阿里云团队开发的云硬盘软件.有了阿里云盘,您可以体验到更快.更安全.更可靠.更智能的云服务.巨大的云存储空间还支持5g下载,下载速度极快,无 ...

最新文章

  1. 236. Lowest Common Ancestor of a Binary Tree
  2. solr 5.3.1安装配置
  3. Lodash学习--Array篇
  4. 基于python的界面自动化测试-基于Selenium+Python的web自动化测试框架
  5. [SDOI2016]生成魔咒
  6. python普通菜单_python多级菜单
  7. P2183 [国家集训队]礼物(扩展卢卡斯)
  8. postgres大版本升级
  9. 抽象类可以生成自己的对象吗_大理石可以自己抛光吗?大理石自己抛光方法解答...
  10. a标签如何链接php文件路径,HTML的a标签href属性指定相对路径与绝对路径的用法讲解...
  11. htc g12 android 4,HTC Desire S G12 刷 官方Android4.0.4
  12. 南京绿溢大厦远程预付费系统项目的设计与应用-安科瑞耿敏花
  13. 笔记本电脑连不上windows无线服务器,笔记本电脑连不上无线如何解决
  14. linux oa系统搭建,企业Linux系统部署OA系统上线实例
  15. 消费品企业,会员营销四大痛点
  16. 计算机 64虚拟内存设置方法,计算机虚拟内存怎样设置
  17. 手机电源键关不了屏幕_手机关机关不了,屏幕也划不了,怎么办
  18. wincap支持VC6.0的版本下载
  19. 常用的JScript代码整理
  20. java 去掉pdf文字_Java 删除PDF中的附件

热门文章

  1. 经典面试题:手机扫描二维码的测试用例(建议收藏)
  2. 支付宝对账数据下载及解析
  3. CentOS系统下各文件夹的作用
  4. Console 接口介绍及电路设计
  5. cpp设计并实现大整数
  6. ggggxc学习笔记----Vue学习笔记II----模板语法
  7. 只有PHP大牛才能读懂的内涵图
  8. 《走出幻觉,走向成熟》--读书笔记1
  9. 服务器开发系列(四)——网络基础
  10. 关于junk jack