调用阿里云的短信服务,实现发送验证码
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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不为空即为有异常:常见异常:权限不足、签名和模板不匹配、余额不足 } } }
6、调用帮助类发送短信
AliyunSMSHelper.UseSMS(phoneNumber, token);
其他问题:
1、问题1:测试专用签名和模板必须结合起来
原因:使用的模板和签名不一致,比如初学者容易创建了签名后,直接使用 赠送的短信验证码模板。
比如这个
工单号关联签名, 因此,需要检查工单号和模板。
2、调用失败,余额不足
就是充钱,买套餐。