2020最新 .NET 中使用阿里雲短信的 API 接口

引言

短信服務(Short Message Service)是阿里云爲用戶提供的一種通信服務的能力,支持快速發送短信驗證碼、短信通知等。(我這裏只講一個最基本的短信的發送驗證碼的功能)

 

1.欲練神功,揮刀子宮嘛。咱們先要把環境搭建好才能安心的完善功能嘛

  首先必須在阿里雲註冊一個賬號

阿里雲產品2000優惠禮包領取​​​​​​​

  在產品中找到短信服務,然後免費開通就行了。在開通服務之後,通過實名認證然後申請短信簽名及短信模板。你需要創建一個accessKeyId的鍵值,注意這個值在項目中是有最高權限的。然後,咱們得去阿里的官網下載一個.dll的控件以及實例

  這兩個插件需要引入到項目中去,才能使用裏面的函數和變量,我就用這裏面這個實例來介紹。

複製代碼

 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();

阿里雲產品2000優惠禮包領取