1. 程式人生 > 其它 >C# 使用阿里雲傳送簡訊

C# 使用阿里雲傳送簡訊

最近有個專案,簡訊服務使用的是阿里雲的,想要使用阿里雲平臺的簡訊服務,首先要註冊一個阿里雲賬號,由於傳送簡訊訊息需要用到簡訊簽名、簡訊模板ID(已新增並通過稽核)

1、註冊阿里雲賬號(地址:https://www.aliyun.com/)

2、新增簡訊簽名和簡訊模板

3、簡訊服務相關引用dll

新增引用

引用——>管理NuGet程式包——>搜尋Aliyun.Acs.Core——>安裝

using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Dysmsapi.Model.V20170525;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

 

編寫傳送簡訊的原始碼

        //產品名稱:雲通訊簡訊API產品,開發者無需替換
        const String product = "Dysmsapi";
        //產品域名,開發者無需替換
        const String domain = "dysmsapi.aliyuncs.com";

        // TODO 此處需要替換成開發者自己的AK(在阿里雲訪問控制檯尋找)
        const String accessKeyId = "xxxxx";
        const String accessKeySecret = "xxxx";
        public static SendSmsResponse sendSms()
        {
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            IAcsClient acsClient = new DefaultAcsClient(profile);
            SendSmsRequest request = new SendSmsRequest();
            SendSmsResponse response = null;
            try
            {

                //必填:待發送手機號。支援以逗號分隔的形式進行批量呼叫,批量上限為1000個手機號碼,批量呼叫相對於單條呼叫及時性稍有延遲,驗證碼型別的簡訊推薦使用單條呼叫的方式
                request.PhoneNumbers = "189xxxx";
                //必填:簡訊簽名-可在簡訊控制檯中找到
                request.SignName = "小羽zzz";
                //必填:簡訊模板-可在簡訊控制檯中找到
                request.TemplateCode = "SMS_65935167";
                //可選:模板中的變數替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為
               
                request.TemplateParam = "{\"code\":\"123\",\"product\":\"測試視訊\"}";
                //可選:outId為提供給業務方擴充套件欄位,最終在簡訊回執訊息中將此值帶回給呼叫者
                request.OutId = "1712271051180713";
                //請求失敗這裡會拋ClientException異常
                response = acsClient.GetAcsResponse(request);

            }
            catch (ServerException e)
            {
                Console.WriteLine(e.ErrorCode);
            }
            catch (ClientException e)
            {
                Console.WriteLine(e.ErrorCode);
            }
            return response;

 

  //

  {
            //初始化acsClient,暫不支援region化
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            IAcsClient acsClient = new DefaultAcsClient(profile);
            //組裝請求物件
            QuerySendDetailsRequest request = new QuerySendDetailsRequest();
            //必填-號碼
            request.PhoneNumber = "xxxx";
            //可選-流水號
            request.BizId = bizId;
            //必填-傳送日期 支援30天內記錄查詢,格式yyyyMMdd       
            request.SendDate = DateTime.Now.ToString("yyyyMMdd");
            //必填-頁大小
            request.PageSize = 10;
            //必填-當前頁碼從1開始計數
            request.CurrentPage = 1;

            QuerySendDetailsResponse querySendDetailsResponse = null;
            try
            {
                querySendDetailsResponse = acsClient.GetAcsResponse(request);
            }
            catch (ServerException e)
            {
                Console.WriteLine(e.ErrorCode);
            }
            catch (ClientException e)
            {
                Console.WriteLine(e.ErrorCode);
            }
            return querySendDetailsResponse;
        }

 

  呼叫

    SendSmsResponse reponse = sendSms();
            Console.Write("簡訊傳送介面返回的結果----------------");
            Console.WriteLine("Code=" + reponse.Code);
            Console.WriteLine("Message=" + reponse.Message);
            Console.WriteLine("RequestId=" + reponse.RequestId);
            Console.WriteLine("BizId=" + reponse.BizId);
            Console.WriteLine();
            Thread.Sleep(3000);

            if (reponse.Code != null && reponse.Code == "OK")
            {
                QuerySendDetailsResponse queryReponse = querySendDetails(reponse.BizId);

                Console.WriteLine("簡訊明細查詢介面返回資料----------------");
                Console.WriteLine("Code=" + queryReponse.Code);
                Console.WriteLine("Message=" + queryReponse.Message);
                foreach (var  smsSendDetailDTO in queryReponse.SmsSendDetailDTOs)
                {
                    Console.WriteLine("Content=" + smsSendDetailDTO.Content);
                    Console.WriteLine("ErrCode=" + smsSendDetailDTO.ErrCode);
                    Console.WriteLine("OutId=" + smsSendDetailDTO.OutId);
                    Console.WriteLine("PhoneNum=" + smsSendDetailDTO.PhoneNum);
                    Console.WriteLine("ReceiveDate=" + smsSendDetailDTO.ReceiveDate);
                    Console.WriteLine("SendDate=" + smsSendDetailDTO.SendDate);
                    Console.WriteLine("SendStatus=" + smsSendDetailDTO.SendStatus);
                    Console.WriteLine("Template=" + smsSendDetailDTO.TemplateCode);
                }
            }