(备忘+学习)最近公司让做一个短信接口,买的是华为云的,用的官方示例代码。源码直接放下边了。

# coding=utf-8
import urllib.parse
import requests
from apig_sdk import signer
import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

if __name__ == '__main__':
    # 必填,请参考"开发准备"获取如下数据,替换为实际值
    url = 'url接口网址/sms/batchSendSms/v1'  # APP接入地址+接口访问URI
    # 认证用的appKey和appSecret硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
    APP_KEY = ""  # APP_Key
    APP_SECRET = ""  # APP_Secret
    sender = ""  # 国内短信签名通道号
    TEMPLATE_ID = ""  # 模板ID

    # 条件必填,国内短信关注,当templateId指定的模板类型为通用模板时生效且必填,必须是已审核通过的,与模板类型一致的签名名称
    signature = "华为云短信测试"  # 签名名称

    # 必填,全局号码格式(包含国家码),示例:+86151****6789,多个号码之间用英文逗号分隔
    receiver = "+86"  # 短信接收人号码

    # 选填,短信状态报告接收地址,推荐使用域名,为空或者不填表示不接收状态报告
    statusCallBack = ""

    '''
    选填,使用无变量模板时请赋空值 TEMPLATE_PARAM = '';
    单变量模板示例:模板内容为"您的验证码是${1}"时,TEMPLATE_PARAM可填写为'["369751"]'
    双变量模板示例:模板内容为"您有${1}件快递请到${2}领取"时,TEMPLATE_PARAM可填写为'["3","人民公园正门"]'
    模板中的每个变量都必须赋值,且取值不能为空
    查看更多模板规范和变量规范:产品介绍>短信模板须知和短信变量须知
    '''
    TEMPLATE_PARAM = '["369751"]'  # 模板变量

    formData = urllib.parse.urlencode({
        'from': sender,
        'to': receiver,
        'templateId': TEMPLATE_ID,
        'templateParas': TEMPLATE_PARAM,
        'statusCallback': statusCallBack,
        'signature': signature  # 使用中国大陆短信通用模板时,必须填写签名名称
    }).encode('ascii')
    print(formData)

    sig = signer.Signer()
    sig.Key = APP_KEY
    sig.Secret = APP_SECRET

    r = signer.HttpRequest("POST", url)
    r.headers = {"content-type": "application/x-www-form-urlencoded"}
    r.body = formData

    sig.Sign(r)
    print(r.headers["X-Sdk-Date"])
    print(r.headers["Authorization"])

    # 构建请求的完整URL
    request_url = r.scheme + "://" + r.host + r.uri

    # 发送请求
    resp = requests.request(r.method, request_url, headers=r.headers, data=r.body, verify=False)
    print(resp.status_code, resp.reason)
    print(resp.content)

这是自己完整的代码。与官方文档不同的是自己加了一列忽略证书进行http访问接口的代码。是在大佬那里学的。以下是代码和原链接。

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

原链接:https://blog.csdn.net/dugufeilei/article/details/113760451

用之前记得先在控制台申请企业认证,然后创建应用管理、短信模板、签名,不然跑通了也发不出去噢。在哪里申请也给大家放下边了,自取。https://console.huaweicloud.com/msgsms/?agencyId=23554650b134414b98cf87c342c83415&locale=zh-cn&region=cn-north-4#/msgsms/SendtoDetails

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值