Pycharm使用阿里云SDK发送短信(超详细+避坑!!)

文章目录

  • 1. 注册阿里云
  • 2. 创建签名
  • 3. 创建模板
  • 4. 创建AccessKey
  • 5. API发送测试
  • 6. 获取示例
  • 7. pycharm发送验证码
    • 7.1 安装sdk
    • 7.2 参数修改
    • 7.3 发送随机四位数字
    • 7.4 验证码信息返回
    • 7.5 简易版代码:

1. 注册阿里云

访问阿里云官网,进行注册

https://www.aliyun.com/

同时进行实名认证

2. 创建签名

按下列顺序来到阿里云的短信服务

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第1张图片

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第2张图片

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第3张图片

这里自行填入:

  • 签名:就是你发送短信的标签,比如:【签名】您的验证码为:1234,您正在登录,若非本人操作,请勿泄露。

  • 签名来源:我选择的是“测试或学习”(因为我本身也是用来做项目测试用的)

  • 场景说明:也可以说明一下是自己用来学习测试用的。

  • 更多资料:可以不用上传。

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第4张图片

提交后等待审核即可,若审核未通过,就看看是什么原因造成的,再重新修改并添加。

3. 创建模板

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第5张图片

这里需要等待签名审核通过后再创建模板。

  • 模板类型:选择不同的类型,下面模板内容的提示描述不同。

  • 模板名称:就是简单描述你这个模板是干嘛的,比如上图我创建了两个模板“用户注册”和“登录验证码”,一个就是拿来登录用的,另一个就是拿来注册用的。

  • 模板内容:就是短信具体的内容了,比如我前面举的例子(您的验证码为:1234,您正在登录,若非本人操作,请勿泄露。)注意,【签名】是它自动帮你生成的,不用管。还要注意下面说的变量,看看它提供的变量格式就明白了。

  • 应用场景:就自己填写了,我之前自己创建了一个公众号,就用了公众号的名字。

  • 场景说明:就按照它说明的,写上用来测试账号即可。

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第6张图片

创建好后等待审核通过即可。

4. 创建AccessKey

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第7张图片

我这里选择的是继续使用AccessKey

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第8张图片

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第9张图片

创建好后就会显示你的ID和Secret,一定要保存好AccessKey Secret,因为一旦关掉这个后后面就找不到它了。

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第10张图片

这样AccessKey就创建好了。

5. API发送测试

提前购买一些短信套餐,新人有折扣挺便宜的,也就几块钱,这里不多说。

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第11张图片

就是在这个页面往上拉一点就能看到“购买国内套餐包”。

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第12张图片

点击“调用API发送短信”后来到这个页面

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第13张图片

直接点击“发送调用”,它会提示你会产生费用,所以我们最好提前购买好套餐。

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第14张图片

然后就可以从手机上看到了

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第15张图片

6. 获取示例

测试后我们回到刚刚的网页,按顺序点击

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第16张图片

第三个步骤是复制上面的python代码,复制后的代码我放在下面了。

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys

from typing import List

from alibabacloud_dysmsapi20170525.client import Client as Dysmsapi20170525Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dysmsapi20170525 import models as dysmsapi_20170525_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> Dysmsapi20170525Client:
        """
        使用AK&SK初始化账号Client
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            # 必填,您的 AccessKey ID,
            access_key_id=access_key_id,
            # 必填,您的 AccessKey Secret,
            access_key_secret=access_key_secret
        )
        # Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
        config.endpoint = f'dysmsapi.aliyuncs.com'
        return Dysmsapi20170525Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        # 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取 AccessKey 的方式进行调用,仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html
        client = Sample.create_client(os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'])
        send_sms_request = dysmsapi_20170525_models.SendSmsRequest(
            sign_name='零贰IT',
            template_code='SMS_463629337',
            phone_numbers='15723267119',
            template_param='{"code":"1234"}'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印 API 的返回值
            client.send_sms_with_options(send_sms_request, runtime)
        except Exception as error:
            # 如有需要,请打印 error
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        # 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取 AccessKey 的方式进行调用,仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html
        client = Sample.create_client(os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'])
        send_sms_request = dysmsapi_20170525_models.SendSmsRequest(
            sign_name='零贰IT',
            template_code='SMS_463629337',
            phone_numbers='15723267119',
            template_param='{"code":"1234"}'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印 API 的返回值
            await client.send_sms_with_options_async(send_sms_request, runtime)
        except Exception as error:
            # 如有需要,请打印 error
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

7. pycharm发送验证码

7.1 安装sdk

打开pycharm,新建一个py文件,将刚刚复制的代码粘贴上去

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第17张图片

此时可以看到有很多报错,这是因为我们还没有安装sdk。下面进行安装

直接pip install的话很多会报错,而且速度比较慢,这里用清华镜像源安装。

pip install alibabacloud_dysmsapi20170525 -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install alibabacloud_tea_openapi -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install alibabacloud_tea_util -i https://pypi.tuna.tsinghua.edu.cn/simple

安装了前两个后发现第三个也不是非要安装0.0,所以我们安装前两个就好。

7.2 参数修改

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第18张图片

注意,不止这一处的代码需要修改,下面的代码也有这样的参数需要修改。

修改好后运行就能发送验证码了。

7.3 发送随机四位数字

添加如下代码即可:

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第19张图片

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第20张图片

7.4 验证码信息返回

在main函数里将send_sms_request返回即可

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)_第21张图片

7.5 简易版代码:

from alibabacloud_dysmsapi20170525.client import Client as Dysmsapi20170525Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dysmsapi20170525 import models as dysmsapi_20170525_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient

import random

code = random.randrange(1000, 9999)

def create_client(access_key_id, access_key_secret):
    config = open_api_models.Config(
        access_key_id=access_key_id,
        access_key_secret=access_key_secret
    )
    config.endpoint = f'dysmsapi.aliyuncs.com'
    return Dysmsapi20170525Client(config)

def send_sms():
    client = create_client('AccessKey ID', 'AccessKey Secret')
    send_sms_request = dysmsapi_20170525_models.SendSmsRequest(
        sign_name='签名,
        template_code='模板号',
        phone_numbers='手机号',
        # template_param='{"code":"4567"}'
        template_param='{"code":"' + str(code) + '"}'
    )
    runtime = util_models.RuntimeOptions()
    try:
        # 复制代码运行请自行打印 API 的返回值
        client.send_sms_with_options(send_sms_request, runtime)
    except Exception as error:
        # 如有需要,请打印 error
        UtilClient.assert_as_string(error.message)
    return send_sms_request

print(send_sms())

你可能感兴趣的:(python,阿里云)