阿里雲短信服務從頭到尾流程java版本
短信服務通常是找第三方作為主要的發送手段(除了大佬),而這些第三方大多數都是來來回回最后找你要錢,可能不要錢的我沒發現,但是阿里雲這個配置比較通俗易懂吧,雖然也要錢,但是0.04一條,作為測試開發用一點也不貴吧(但也有套餐)。
主要流程為 注冊簽名 --> 注冊模板---> 獲取模板-->下載對應的sdk--->替換模板中的數據
阿里雲申請方面主要包括 簽名名稱,模板,AccessKey(AccessKey ID,Access Key Secret)
例如 餓了嗎,您的注冊碼為1234 這里面餓了嗎就是簽名,您的注冊碼就是{code}這個是模板。
1 注冊方面
這個不說了吧,阿里雲賬號都有吧,短信開通服務也是免費開通的
但是要說明一點,就是短信服務和短信驗證碼不一樣的
1.1注冊簽名
簽名注冊其實挺麻煩吧(最麻煩的)分為兩種簽名 注意的是要和模板類型相互對應
1 驗證碼簽名(只有驗證碼)!! 未上線產品只能申請驗證碼
2 通用簽名 (包括通知,驗證碼,推廣短信,港澳台)這個需要需要上交很多材料,也可以試試選擇微信公眾號內個,可以不用上交材料(但是大概率審核不過),最好上線后在申請這個。
因為時間原因,我就選擇驗證碼服務,名稱盡量起的正常一樣,之前申請了5 6次,不斷改名,最后才成功
1.2模板注冊
模板注冊相對簽名容易一些相比簽名來說,這個比較容易一些,!!!但是之前模板申請的類型是簽名類型要和模板類型對應,這里模板類型為驗證碼類型
1.3 AccessKey
AccessKey包括主要為AccesskeyId 和 Access Key Sercret 這個很容易了,短信驗證碼發送就可以找到了,在個人頭像中能夠的accesskey管理就可以找到了
2 sdk方面
sdk方面支持很多語言的sdk的,我這里使用是java
鏈接如下
https://help.aliyun.com/document_detail/112148.html?spm=a2c4g.11186623.2.12.15ec50a4Jd0cIw
2.1 jar包下載
我的開發工具是eclipse,除了直接下載的阿里的sdk 的jar包,還需要配套的gson的jar包,如果沒有會報錯
java的sdk和gson對應的jar包 https://github.com/zyhQAQ/gson.git
2.2 具體代碼
具體代碼如下,調用方法就可以發送了 !注意聯網
package com.zyh.util; import com.aliyuncs.CommonRequest; import com.aliyuncs.CommonResponse; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; public class SendSmsByPhone { private String AccessKeyId = "";//對應的accesskeyid private String AccessKeySecret = "";//對應的accesskeysecret public void sendmessage(String phone){ //傳入手機號,一次調用支持發送一個手機號驗證碼 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", AccessKeyId, AccessKeySecret); IAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.setMethod(MethodType.POST); request.setDomain("dysmsapi.aliyuncs.com"); request.setVersion("2017-05-25");//日期別亂寫 request.setAction("SendSms"); request.putQueryParameter("RegionId", "cn-hangzhou"); request.putQueryParameter("PhoneNumbers", phone);//手機號 request.putQueryParameter("SignName", "往事如風");//簽名名稱 request.putQueryParameter("TemplateCode", "SMS_180956392");//模板code request.putQueryParameter("TemplateParam","{\"code\":\"1234\"}");//這個里面填寫驗證碼內容 try { CommonResponse response = client.getCommonResponse(request); System.out.println(response.getData()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } }