小弟初来乍到,这也是我的第一篇文章,写的不好的地方还望指正。谢谢各位!

引言

短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码、短信通知等。(我这里只讲一个最基本的短信的发送验证码的功能)

 

1.欲练神功,挥刀子宫嘛。咱们先要把环境搭建好才能安心的完善功能嘛

  首先必须在阿里云注册一个账号

  在产品中找到短信服务,然后免费开通就行了。在开通服务之后,通过实名认证然后申请短信签名及短信模板。你需要创建一个accessKeyId的键值,注意这个值在项目中是有最高权限的。然后,咱们得去阿里的官网下载一个.dll的控件以及实例(https://help.aliyun.com/document_detail/55359.html?spm=5176.doc55288.6.564.OcWmAm)。

  这两个插件需要引入到项目中去,才能使用里面的函数和变量,我就用这里面这个实例来介绍。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 using Aliyun.Acs.Core;
 5 using Aliyun.Acs.Core.Exceptions;
 6 using Aliyun.Acs.Core.Profile;
 7 
 8 using Aliyun.Acs.Dysmsapi.Model.V20170525;
 9 
10 namespace WindowsFormsApplication4
11 {
12     static class Program
13     {
14         static void Main(string[] args)
15         {
16             String product = "Dysmsapi";//短信API产品名称
17             String domain = "dysmsapi.aliyuncs.com";//短信API产品域名
18             String accessKeyId = "";//你的accessKeyId
19             String accessKeySecret = "";//你的accessKeySecret
20 
21             IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
22             //IAcsClient client = new DefaultAcsClient(profile);
23             // SingleSendSmsRequest request = new SingleSendSmsRequest();
24 
25             DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
26             IAcsClient acsClient = new DefaultAcsClient(profile);
27             SendSmsRequest request = new SendSmsRequest();
28             try
29             {
30                 //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为20个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
31                 request.PhoneNumbers = "13567939495";
32                 //必填:短信签名-可在短信控制台中找到
33                 request.SignName = "阿里云短信测试专用";
34                 //必填:短信模板-可在短信控制台中找到
35                 request.TemplateCode = "SMS_71135039";
36                 //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
37                 request.TemplateParam = "{\"customer\":\"123\"}";
38                 //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
39                 request.OutId = "21212121211";
40                 //请求失败这里会抛ClientException异常
41                 SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);
42                 //result表示执行结果,是由阿里云返回给本地服务器的
43                 String result = sendSmsResponse.Message;
44                 System.Console.WriteLine(result);
45 
46 
47             }
48             catch (ServerException e)
49             {
50                 System.Console.WriteLine("Hello World!");
51             }
52             catch (ClientException e)
53             {
54                 System.Console.WriteLine("Hello World!");
55             }
56         }
57     }
58 }

 

  这里请注意,result是程序执行结束的返回值,表示的意义是程序执行的结果(OK = "成功的给指定手机号码发送了短信")。我这里把它单独放出来,就是希望如果web项目的话,可以使用这个返回值来显示程序执行状态。想象一下,如果你想写一个判断用户输入的手机号码格式是否正确的表达式需要写多少条,又要写多少 if 语句判断它的格式。这一切都是没有必要的。然后我们就可以一个一个填写这些信息就可以了。

  对了,我们还需要验证码。这里我给出我使用的生成验证码的代码。来个 6 位全数字的验证码吧(最近比较流行嘛)

 

1  Random rd = new Random();
2 //这里生成一个 6 位数的全数字验证码
3  int AuthCodeNumber = rd.Next(100000,1000000);
4  String AuthCode = AuthCodeNumber.ToString();

 

 

  好了,这样就可以了。短信功能就这么实现了,这是本人的第一篇文章,希望对大家有一定帮助吧,也希望有什么地方写的不好需要改进的,都可以评论告诉我。互相进步嘛。谢谢!