具體步驟:html
爲了訪問短信服務,您須要有一個阿里雲帳號。若是沒有,可首先按照以下步驟建立阿里雲帳號:java
爲了使用短信發送API-JAVA SDK,您必須申請阿里雲的訪問密鑰。api
阿里雲訪問祕鑰是阿里云爲用戶使用 API(非控制檯)來訪問其雲資源設計的「安全口令」。您能夠用它來簽名 API 請求內容以經過服務端的安全驗證。安全
該訪問祕鑰成對(AccessKeyId 與 AccessKeySecret)生成和使用。每一個阿里雲用戶能夠建立多對訪問祕鑰,且可隨時啓用(Active)、禁用(Inactive)或者刪除已經生成的訪問祕鑰對。dom
您能夠經過阿里雲控制檯的 祕鑰管理頁面 建立、管理全部的訪問祕鑰對,且保證它處於「啓用」狀態。因爲訪問祕鑰是阿里雲對 API 請求進行安全驗證的關鍵因子,請妥善保管你的訪問祕鑰。若是某些祕鑰對出現泄漏風險,建議及時刪除該祕鑰對並生成新的替代祕鑰對。工具
短信簽名post
根據用戶屬性來建立符合自身屬性的簽名信息。企業用戶須要上傳相關企業資質證實,我的用戶須要上傳證實我的身份的證實。網站
注意:短信簽名須要審覈經過後纔可使用。阿里雲
短信模板spa
短信模板,即具體發送的短信內容。
短信模板能夠支持驗證碼、短信通知、推廣短信三種模式。驗證碼和短信通知,經過變量替換實現個性短信定製。推廣短信不支持在模板中添加變量。
短信模板須要審覈經過後纔可使用。
爲了成功發送一條短信通知,您至少須要完成如下步驟
1、在控制檯完成短信簽名與短信模板的申請,得到調用接口必備的參數
在「短信簽名」頁面完成簽名的申請,得到短信簽名的字符串 簽名申請手冊
在「短信模板」頁面完成模板的申請,得到模板ID。模板申請手冊
參數名稱 | 參數類型 | 必填與否 | 樣例取值 | 參數說明 |
---|---|---|---|---|
PhoneNumbers | String | 必須 | 15000000000 | 短信接收號碼,支持以逗號分隔的形式進行批量調用,批量上限爲1000個手機號碼,批量調用相對於單條調用及時性稍有延遲,驗證碼類型的短信推薦使用單條調用的方式 |
SignName | String | 必須 | 雲通訊 | 短信簽名 |
TemplateCode | String | 必須 | SMS_0000 | 短信模板ID |
TemplateParam | String | 可選 | {「code」:」1234」,」product」:」ytx」} | 短信模板變量替換JSON串,友情提示:若是JSON中須要帶換行符,請參照標準的JSON協議對換行符的要求,好比短信內容中包含\r\n的狀況在JSON中須要表示成\r\n,不然會致使JSON在服務端解析失敗 |
SmsUpExtendCode | String | 可選 | 90999 | 上行短信擴展碼,無特殊須要此字段的用戶請忽略此字段 |
OutId | String | 可選 | abcdefgh | 外部流水擴展字段 |
出參名稱 | 出參類型 | 樣例取值 | 參數說明 |
---|---|---|---|
RequestId | String | 8906582E-6722 | 請求ID |
Code | String | OK | 狀態碼-返回OK表明請求成功,其餘錯誤碼詳見錯誤碼列表 |
Message | String | 請求成功 | 狀態碼的描述 |
BizId | String | 134523^4351232 | 發送回執ID,可根據該ID查詢具體的發送狀態 |
SDK工具包中一共包含了2個類庫,一個aliyun-java-sdk-core包,另一個是alicom-dysms-api包,將這兩個包執行mvn package命令或者mvn deploy命令打包出相應的jar包,添加到工程類庫中依賴使用。
SDK&DEMO[下載地址]
注:有備註無需修改的位置請勿改動。
//設置超時時間-可自行調整
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化ascClient須要的幾個參數
final String product = "Dysmsapi";//短信API產品名稱(短信產品名固定,無需修改)
final String domain = "dysmsapi.aliyuncs.com";//短信API產品域名(接口地址固定,無需修改)
//替換成你的AK
final String accessKeyId = "yourAccessKeyId";//你的accessKeyId,參考本文檔步驟2
final String accessKeySecret = "yourAccessKeySecret";//你的accessKeySecret,參考本文檔步驟2
//初始化ascClient,暫時不支持多region(請勿修改)
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();
//使用post提交
request.setMethod(MethodType.POST);
//必填:待發送手機號。支持以逗號分隔的形式進行批量調用,批量上限爲1000個手機號碼,批量調用相對於單條調用及時性稍有延遲,驗證碼類型的短信推薦使用單條調用的方式
request.setPhoneNumbers("1500000000");
//必填:短信簽名-可在短信控制檯中找到
request.setSignName("雲通訊");
//必填:短信模板-可在短信控制檯中找到
request.setTemplateCode("SMS_1000000");
//可選:模板中的變量替換JSON串,如模板內容爲"親愛的${name},您的驗證碼爲${code}"時,此處的值爲
//友情提示:若是JSON中須要帶換行符,請參照標準的JSON協議對換行符的要求,好比短信內容中包含\r\n的狀況在JSON中須要表示成\\r\\n,不然會致使JSON在服務端解析失敗
request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
//可選-上行短信擴展碼(擴展碼字段控制在7位或如下,無特殊需求用戶請忽略此字段)
//request.setSmsUpExtendCode("90997");
//可選:outId爲提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者
request.setOutId("yourOutId");
//請求失敗這裏會拋ClientException異常
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
//請求成功
}
相關網址:
短信發送API
https://help.aliyun.com/document_detail/55284.html?spm=5176.product44282.4.4.sF1kcZ
登錄API
https://dysms.console.aliyun.com/dysms.htm?spm=5176.doc55330.2.3.w5nf8x#/develop/sign
登錄以後點擊左邊的:點擊簽名管理進行申請;點擊模板管理進行模板申請;成功以後在java代碼中進行配置引用便可
Code | 描述 |
---|---|
OK | 請求成功 |
isp.RAM_PERMISSION_DENY | RAM權限DENY |
isv.OUT_OF_SERVICE | 業務停機 |
isv.PRODUCT_UN_SUBSCRIPT | 未開通雲通訊產品的阿里雲客戶 |
isv.PRODUCT_UNSUBSCRIBE | 產品未開通 |
isv.ACCOUNT_NOT_EXISTS | 帳戶不存在 |
isv.ACCOUNT_ABNORMAL | 帳戶異常 |
isv.SMS_TEMPLATE_ILLEGAL | 短信模板不合法 |
isv.SMS_SIGNATURE_ILLEGAL | 短信簽名不合法 |
isv.INVALID_PARAMETERS | 參數異常 |
isp.SYSTEM_ERROR | 系統錯誤 |
isv.MOBILE_NUMBER_ILLEGAL | 非法手機號 |
isv.MOBILE_COUNT_OVER_LIMIT | 手機號碼數量超過限制 |
isv.TEMPLATE_MISSING_PARAMETERS | 模板缺乏變量 |
isv.BUSINESS_LIMIT_CONTROL | 業務限流 |
isv.INVALID_JSON_PARAM | JSON參數不合法,只接受字符串值 |
isv.BLACK_KEY_CONTROL_LIMIT | 黑名單管控 |
isv.PARAM_LENGTH_LIMIT | 參數超出長度限制 |
isv.PARAM_NOT_SUPPORT_URL | 不支持URL |
isv.AMOUNT_NOT_ENOUGH | 帳戶餘額不足 |
注:查詢全部錯誤碼及解決辦法請點擊短信接口調用錯誤碼