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