基于阿里云服务实现短信验证码功能

基于,阿里,服务,实现,短信,验证码,功能 · 浏览次数 : 997

小编点评

**步骤一:创建阿里云账户** 访问阿里云官网,进行个人或企业认证,并创建 AccessKey 和 AccessKeySecret。 **步骤二:创建项目** 创建 Winform 窗体程序,并引用阿里云 SDK 包 Aliyun-net-sdk-dysmsapi。 **步骤三:创建消息模板** 在消息模板中插入模板变量,并关联 appropriate签名。 **步骤四:创建 API 调用** 使用 Aliyun-net-sdk-dysmsapi 库发送用户短信,并指定模板和签名。 **步骤五:测试验证** 在运行程序时,访问阿里云短信控制台,发送测试短信以测试接收验证。并截图阿里云后台数据实时数据。 **代码示例** ```csharp // 发送短信代码 public void btSendMsg_Click(object sender, EventArgs e) { string phone = "13004089962"; string code = "888888"; string msg = $"{code}: Your code is {code}"; string templateCode = "SMS_461895332"; var response = AliMsgService.SendUserSms(phone, msg, templateCode); if (response.Code == "ok") { Console.WriteLine("短信已发送。"); } else { Console.WriteLine("发送失败。错误码:{0}", response.Code); } } ``` **注意** * 在使用模板时,必须将模板代码和签名名称替换为实际值。 * 每个发送请求只能关联一个模板。 * 您可以在阿里云短信控制台中查看发送记录。

正文

前言:

  阿里云短信服务是一项基于云计算和大数据技术的企业级短信平台服务。它能够为企业和开发者提供高可用、高性能、高稳定性的短信发送服务,可以快速地将各类业务通知、验证码、营销推广等信息发送给用户。在我们经常登录一些系统或者APP时候,经常会遇到其他登录登录方式——短信验证码登录。这也是我前一段时间优化一个系统时新增加的一个登录功能,mark记录一下。

一、准备工作:

登录阿里云官网注册用户:

https://dysms.console.aliyun.com/

登录后完成个人或者企业认证:

说明:供个人学习测试,建议个人认证就可以。认证完成后,会赠送100条免费测试短信,用完后需要续费购买。

image

创建AccessKey :

Step1:点击右上角头像=>AccessKey 管理

image

Step2:点击创建,填写内容后创建,此处我已经创建

image

Step3:创建后,查看复制出AccessKeySecret和AccessKeyId,供后续程序调用API使用

image

创建签名 :

说明:短信发送时,必须要模板和签名搭配使用,必须创建。创建消息模板时候需要关联签名,所以要先创建签名,等待签名审核通过,再创建消息模板。

image

image

创建消息模板:

说明:如上所述,需要关联已经审核通过的签名。

image

image

完成创建详情:
image

二、创建项目:

项目结构:

说明:方便测试,创建Winform窗体程序。项目结构目录如下:
image

说明:通过Nuget引用阿里云SDK包

Aliyun-net-sdk-dysmsapi   -----api包Aliyun-net-sdk-core   -----安装核心SDK

三、核心代码:

主窗体:

image

点击触发事件代码:

private void btSendMsg_Click(object sender, EventArgs e)
        {
            string phone = "13004089962";//手机号码,多个用,分割
            string code = "888888";//验证码
            string msg = "{\"code\":\"" + code + "\"}";//拼接验证码Json格式,参数名称和消息模板中保持一致
            string templateCode = "SMS_461895332";//消息模板编码
            var  ret  =  AliMsgService.SendUserSms(phone, msg, templateCode);
         }

调用阿里云API服务业务短端代码:

  public class AliMsgService
    {
​
​
        //产品名称:云通信短信API产品,开发者无需替换
        const String product = "Dysmsapi";
        //产品域名,开发者无需替换
        const String domain = "dysmsapi.aliyuncs.com";
​
        // TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
        private static String accessKeyId = "";//AccessKey管理中查看
        private static String accessKeySecret = "";//AccessKey管理中查看
​
        /// <summary>
        /// 发送消息通知
        /// </summary>
        /// <param name="phone">推送手机号</param>
        /// <param name="msg">JSON参数</param>
        /// <param name="TemplateCode">短信模板</param>
        /// <returns></returns>
        public static smsrespon SendUserSms(string phone, string msg, string TemplateCode)
        {
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
            CommonRequest request = new CommonRequest();
            request.Method = MethodType.POST;
            request.Domain = domain;
            request.Version = "2017-05-25";//请求版本
            request.Action = "SendSms";
            request.AddQueryParameters("PhoneNumbers", phone);//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,
            request.AddQueryParameters("SignName", "阿亮学习发送");//必填:短信签名-可在短信控制台中找到
            request.AddQueryParameters("TemplateCode", TemplateCode);//必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
            request.AddQueryParameters("TemplateParam", msg);//"{\"code\":\"" + code + "\"}"
            try
            {
                CommonResponse response = client.GetCommonResponse(request);
                return JsonConvert.DeserializeObject<smsrespon>(response.Data);
            }
            catch (ServerException e)
            {
                return new smsrespon { Message = "阿里云发送验证码异常", Code = "no" };
            }
            catch (ClientException e)
            {
                return new smsrespon { Message = "阿里云发送验证码失败", Code = "no" };
            }
        }
​
        public class smsrespon
        {
            public string Message { get; set; }
            public string RequestId { get; set; }
            public string BizId { get; set; }
            public string Code { get; set; }
        }
    }

四、测试验证:

测试收到验证码截图:

image

阿里云后台数据实时数据:

image

image

image

源码链接地址:

Gitee完整实例地址:

https://gitee.com/mingliang_it/AliyunSendMsgTest.git

与基于阿里云服务实现短信验证码功能相似的内容:

基于阿里云服务实现短信验证码功能

## 前言: 阿里云短信服务是一项基于云计算和大数据技术的企业级短信平台服务。它能够为企业和开发者提供高可用、高性能、高稳定性的短信发送服务,可以快速地将各类业务通知、验证码、营销推广等信息发送给用户。在我们经常登录一些系统或者APP时候,经常会遇到其他登录登录方式——短信验证码登录。这也是我前一段

图形验证码+短信验证码实战

## 前言: 上一篇分分享了[基于阿里云实现的短信验证码](https://www.cnblogs.com/wml-it/p/17613232.html)文章,考虑到为了防止登录时,非人工操作,频繁获取验证码,趁热打铁,现在添加了图片验证码服务功能。借鉴网上传统的做法,把实现这两个验证的功能做成有个

云原生最佳实践系列 6:MSE 云原生网关使用 JWT 进行认证鉴权

01 方案概述 MSE 网关可以为后端服务提供转发路由能力,在此基础上,一些敏感的后端服务需要特定认证授权的用户才能够访问。MSE 云原生网关致力于提供给云上用户体系化的安全解决方案,其中 JWT 认证能力是在 Json Web Token 这种结构化令牌的基础上实现了一套基于用户体系对用户的 AP

Go泛型解密:从基础到实战的全方位解析

本篇文章深入探讨了Go语言的泛型特性,从其基础概念到高级用法,并通过实战示例展示了其在实际项目中的应用。 关注【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资

阿里云物联网平台专用工具详细说明

阿里云物联网平台专用工具基本涵盖了阿里云物联网平台提供你主要管理功能,可以方便创建产品、设备、物模型,查看设备实时属性,事件,发送服务和查看服务日志等等

[转帖]MySQL该使用哪种CPU架构服务器?

https://www.cnblogs.com/zhoujinyi/p/16880861.html 1. 摘要 近期,阿里云推出基于 ARM 架构的 RDS MySQL 和 RDS PostgreSQL 实例,现处于邀测阶段,阿里云宣传 ARM 架构的亮点是:在价格下降13%的基础上,平均性能 AR

[转帖]在阿里,我们如何管理测试环境

在阿里,我们如何管理测试环境 前言 阿里的许多实践看似简单,背后却蕴涵着许多思考,譬如测试环境的管理。 互联网产品的服务通常是由Web应用、中间件、数据库和许多后台业务程序组成的,一套运行环境就是一个自成一体的小生态。最基本的运行环境是线上环境,部署产品的正式发布版本,为用户提供持续可靠的服务。 除

[转帖]保护好自己的服务器,fail2ban使用基本教程

https://zhuanlan.zhihu.com/p/528392777 不知道小伙伴们是不是拥有一台自己的云服务器呢?如果有请“点赞”,如果没有请点击“在看”。 我拥有的第一台云服务器其实是在我大学的时候,也就是在云服务等一众概念推向市场的时候,特别是阿里云的产品,没用过但也有听说过,但我的的

[转帖]新纪录!阿里云磐久服务器M系列刷新SPEC CPU 2017 最好成绩

https://aijishu.com/a/1060000000338927 近日,SPEC官网公布最新一期的SPEC CPU 2017测试结果。阿里云磐久服务器M系列在SPECrate®2017 Integer base基准测试中取得510分,刷新了单路服务器在该项测试中的最好成绩。 图 | 来自

阿里面试:说说自适应限流?

限流想必大家都不陌生,它是一种控制资源访问速率的策略,用于保护系统免受过载和崩溃的风险。限流可以控制某个服务、接口或系统在一段时间内能够处理的请求或数据量,以防止系统资源耗尽、性能下降或服务不可用。 常见的限流策略有以下几种: 令牌桶算法:基于令牌桶的方式,限制每个单位时间内允许通过的请求量,请求量