调用阿里云的短信服务,实现发送验证码

发布时间 2023-07-27 20:43:20作者: lanrenka

 

1、阿里云短信服务地址

https://help.aliyun.com/product/44282.html?spm=a2c4g.204183.0.0.5d946806NuuBFD

通过api调用短信服务说明:

https://help.aliyun.com/document_detail/71160.html?spm=a2c4g.204183.4.3.5d946806NuuBFD&scm=20140722.H_71160._.ID_71160-OR_rec-V_1

 

2、开通短信服务

点击开通,扫码进入钉钉群后即可点击开通。

2.1、添加签名

 

个人学习可以选择

 界面是这样的:

 

 

 

 

 审核后:

 

 

 2.2、添加模板

 初始模板:

 填写参考:

 

 

3、获取AccessKey

 

 选择使用子用户。

然后创建一个用户

 

 将accesskey保存下来。

后续如果出现这个,说明权限不足。

 

或者直接创建:

 

 

 

4、导入Nuget包:

 

 也可以用命令:

Install-Package AlibabaCloud.SDK.Dysmsapi20170525 -Version 2.0.24

 

 

5、短信发送帮助类AliyunSMSHelper

namespace Study.Net.Utility
{
    public  class AliyunSMSHelper
    {
        public static void UseSMS(string phone, string token)
        {
            string accessKeyId = "xxxxxxx";
            string accessKeySecret = "vvvvvvvvvvv";
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // 必填,您的 AccessKey ID
                AccessKeyId = accessKeyId,
                // 必填,您的 AccessKey Secret
                AccessKeySecret = accessKeySecret,
                // 使用默认凭证初始化Credentials Client
                //Credential = new Aliyun.Credentials.Client(null),
            };
            // 配置云产品 ECS 的服务接入地址(endpoint)
            // config.Endpoint = "ecs-cn-hangzhou.aliyuncs.com";
            //AlibabaCloud.SDK.Ecs20140526.Client client = new AlibabaCloud.SDK.Ecs20140526.Client(config);
            //AlibabaCloud.SDK.Ecs20170525.Models.DescribeInstancesRequest request = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeInstancesRequest()
            //{
            //    RegionId = "cn-hangzhou"
            //};

            // 配置云产品短信服务的服务接入地址(endpoint)
            config.Endpoint = "dysmsapi.aliyuncs.com";
            AlibabaCloud.SDK.Dysmsapi20170525.Client dysmsapiClient = new AlibabaCloud.SDK.Dysmsapi20170525.Client(config);
            AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest request
                =new AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest
                {
                    PhoneNumbers = phone,
                    SignName = "Krystal的博客",//签名
                    TemplateCode = "SMS_462210223", //模板Code
                    TemplateParam = $"{{\"code\":\"{token}\"}}", //替换模板参数
                };   



            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions = new AlibabaCloud.TeaUtil.Models.RuntimeOptions()
            {
                // 读取超时
                ReadTimeout = 10000,
                // 连接超时
                ConnectTimeout = 5000,
                // 是否自动重试
                Autoretry = false
            };
            // 通过 SDK Core 执行实际的 Http 请求将返回的结果序列化为 SDK 的 Response 结构
            var response = dysmsapiClient.SendSmsWithOptionsAsync(request, runtimeOptions);
            System.Console.WriteLine(response.Status);
            System.Console.WriteLine(response.Result.Body.Message);//Message不为空即为有异常:常见异常:权限不足、签名和模板不匹配、余额不足
        }
    }
}
AliyunSMSHelper

 

 

6、调用帮助类发送短信

AliyunSMSHelper.UseSMS(phoneNumber, token);

 

 

其他问题:

1、问题1:测试专用签名和模板必须结合起来

 原因:使用的模板和签名不一致,比如初学者容易创建了签名后,直接使用 赠送的短信验证码模板。

比如这个

 

工单号关联签名, 因此,需要检查工单号和模板。

 2、调用失败,余额不足

 就是充钱,买套餐。