一、在對接阿里雲短信平台之前需完成阿里雲短信平台短信簽名和短信模板的配置,在此不做過多說明,建議采用企業賬號的身份申請短信簽名和短信模板更容易審核通過一些
阿里雲短信平台地址 https://www.aliyun.com/product/sms?spm=5176.19720258.J_2686872250.7.7b812c4aBro5hF
二、完成以上配置之后在項目Nuget包中安裝:AlibabaCloud.SDK.Dysmsapi20170525
三、主體代碼
public void SendSms(string PhoneNumbers) { var verifyCode = GetVerifyCode(); JObject jObject = new JObject(); jObject.Add("code", verifyCode); AlibabaCloud.SDK.Dysmsapi20170525.Client client = CreateClient("accessKeyId", "accessKeySecret"); AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest sendSmsRequest = new AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest { PhoneNumbers = PhoneNumbers, SignName = "SignName", TemplateCode = "TemplateCode", TemplateParam = jObject.ToString() }; SendSmsResponse sendSmsResponse = client.SendSms(sendSmsRequest); if (sendSmsResponse.Body.Code == "OK" && sendSmsResponse.Body.Message == "OK") { textEdit1.Text = sendSmsResponse.Body.BizId; SetCacheTimeSpan(sendSmsResponse.Body.BizId, verifyCode, 20); } else if("isv.BUSINESS_LIMIT_CONTROL".Equals(sendSmsResponse.Body.Code)) { throw new Exception("獲取驗證碼過於頻繁"); } } public static AlibabaCloud.SDK.Dysmsapi20170525.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; config.Endpoint = "dysmsapi.aliyuncs.com"; return new AlibabaCloud.SDK.Dysmsapi20170525.Client(config); } /// <summary> /// 生成6位數隨機驗證碼 /// </summary> /// <returns></returns> private static int GetVerifyCode() { Random random = new Random(); return random.Next(100000, 999999); } /// <summary> /// 設置緩存相對過期時間 /// </summary> /// <param name="cacheKey">key</param> /// <param name="objValue">緩存對象</param> /// <param name="timeSpan">過期時間(秒)</param> public static void SetCacheTimeSpan(string cacheKey, object objValue, long timeSpan) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert(cacheKey, objValue, null, DateTime.MaxValue, TimeSpan.FromSeconds(timeSpan)); } /// <summary> /// 獲取Cache的value /// </summary> /// <param name="cacheKey"></param> /// <returns></returns> public object GetCacheValue(string cacheKey) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; return objCache.Get(cacheKey); }
四、調用
SendSms(PhoneNumbers);