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

基于,阿里,服务,实现,短信,验证码,功能 · 浏览次数 : 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

[转帖]性能最高提升36%!基于阿里云倚天实例的Redis性能测试验证

性能最高提升36%!基于阿里云倚天实例的Redis性能测试验证 https://aijishu.com/a/1060000000376643 云计算Benchmark性能优化Arm 处理器Alibaba 本文转载自阿里云开发者社区。https://developer.aliyun.com/... 简

基于SqlSugar的开发框架循序渐进介绍(26)-- 实现本地上传、FTP上传、阿里云OSS上传三者合一处理

在前面介绍的随笔《基于SqlSugar的开发框架循序渐进介绍(7)-- 在文件上传模块中采用选项模式【Options】处理常规上传和FTP文件上传》中介绍过在文件上传处理的过程中,整合了本地文件上传和基于FTP方式的上传文件的处理整合。本篇随笔继续介绍文件上传的处理,基于选项模式【Options】方式整合基于阿里云OSS对象存储的处理方式。

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

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

[转帖]实测:云RDS MySQL性能是自建的1.6倍

https://www.cnblogs.com/zhoujinyi/p/16392223.html 1. 摘要 基于之前写的「云厂商 RDS MySQL 怎么选」的文章,为了进一步了解各云厂商在RDS MySQL数据库性能上的差异,本文将对自建MySQL、阿里云、腾讯云、华为云和AWS 的 RDS

影片自由,丝滑流畅,Docker容器基于WebDav协议通过Alist挂载(百度网盘/阿里云盘)Python3.10接入

使用过NAS(Network Attached Storage)的朋友都知道,它可以通过局域网将本地硬盘转换为局域网内的“网盘”,简单理解就是搭建自己的“私有云”,但是硬件和网络成本都太高了,有点可望而不可及的意思。Alist开源库则可以满足我们,它能将公共网盘反过来变成一种联网的本地硬盘,使用We

带你了解基于Ploto构建自动驾驶平台

摘要:华为云Solution as Code推出基于Ploto构建自动驾驶平台解决方案。 本文分享自华为云社区《基于Ploto构建自动驾驶平台》,作者:阿米托福 。 2022年6月15日,主题为“因聚而生 为你所能”的华为伙伴暨开发者大会 2022 正式开启,在自动驾驶专场中,华为云携手合作伙伴联合

MetaTown:一个可以自己构建数字资产的平台

摘要:华为云Solution as Code重磅推出《基于MetaTown构建数字资产平台》解决方案。 本文分享自华为云社区《基于MetaTown构建数字资产平台》,作者: 阿米托福。 华为云Solution as Code重磅推出《基于MetaTown构建数字资产平台》解决方案,由华为云数字资产链