綜述
注:本文寫於2017年6月22日升級之后。
使用阿里大魚發送短信已經成為一種趨勢,因為權威,而且價格也比較適中,被越來越多的公司所采用。在介紹阿里大魚發送短信之前,首先得擁有阿里雲的賬號,這個賬號可以使用支付寶賬號進行登錄。筆者是Java程序猿,本篇也只介紹Java的方式,其他方式參考阿里雲的幫助文檔。
步驟
第一步:注冊阿里雲賬號,獲取app access key 和 app access secret。點擊個人頭像------>管理控制台-------->個人賬號名稱(一般是手機號)----->accesskeys,進入到Access key 管理界面,在發送短信時需要這兩個值。
(圖1)
第二步:申請短信簽名,短信簽名是商戶的標識,短信簽名會出現在短信內容的開頭,例如支付寶的短信簽名為”支付寶”,短信開頭的內容是【支付寶】。申請短信簽名需要審核,而且有個數限制,一般不會超過5個。管理控制台----->展開雲計算基礎服務----->短信服務------> 短信簽名------> 添加短信簽名
(圖2)
第三步:申請短信模板,阿里大魚將短信分為三種,驗證碼,短信通知和推廣短信。申請短信模板也需要審核,但是沒有個數限制。
第四步:下載SDK及Demo,將aliyun-java-sdk-core-version.jar及aliyun-java-sdk-dysmsapi-version.jar導入到項目中,其中version為版本號。如果是Maven項目,解壓文件,搜索pom.properties,將groupId,artifactId,version寫入到pom.xml中。
#Generated by Maven #Wed Jun 14 21:12:41 CST 2017 version=1.0.0-SNAPSHOT groupId=com.aliyun artifactId=aliyun-java-sdk-dysmsapi 替換為 <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
第五步:編寫程序,編寫程序分為三部分。
第一部分,獲取IAcsClient對象,該對象用來發送請求。創建IAcsClient對象的過程需要app access key 和 secret。
/** * 獲取IAcsClient對象 * * @return * @throws ClientException */ private static IAcsClient initClient() throws ClientException { 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產品域名 // 秘鑰key和secret final String appkey = "yourappKey"; final String appSecret = "yourappsecret"; // 初始化ascClient,暫時不支持多region IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", appkey, appSecret); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); return acsClient; }
第二部分:根據短信模板,創建SendSmsRequest請求對象。
/** * 獲取SMS_72780019短信模板對應的請求 * * @return */ private static SendSmsRequest getSMS_72780019Message() { //組裝請求對象 SendSmsRequest request = new SendSmsRequest(); //必填:待發送手機號。支持以逗號分隔的形式進行批量調用,批量上限為20個手機號碼,批量調用相對於單條調用及時性稍有延遲,驗證碼類型的短信推薦使用單條調用的方式 request.setPhoneNumbers("1500000000"); //必填:短信簽名-可在短信控制台中找到 request.setSignName("雲通信"); //必填:短信模板-可在短信控制台中找到 request.setTemplateCode("SMS_1000000"); //可選:模板中的變量替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為 request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}"); //可選:outId為提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者 request.setOutId("yourOutId"); }
第三部分:發送短信,獲取響應對象,
/** * @param templateCode 短信模板code * @throws ClientException * */ public static void sendMessage(String templateCode) throws ClientException { // 初始化client對象 IAcsClient client = initClient(); // 短信模板請求對象 SendSmsRequest request = null; // 根據短信模板code來獲取不同的短信模板請求對象 switch(templateCode) { case "SMS_72780019": request = getSMS_72780019Message(); break; } // 發送短信 SendSmsResponse response = client.getAcsResponse(request); // 打印短信的消息 System.out.println("_____________發送SMS_72780019短信收到的響應信息_______________"); System.out.println("請求的ID:" + response.getRequestId()); System.out.println("請求的狀態碼:" + response.getCode()); System.out.println("請求的狀態碼描述:" + response.getMessage()); System.out.println("請求的回執ID:" + response.getBizId()); }
點擊短信服務統計,可以看到每天發送多少條短信,如果發送短信失敗,可以點擊”失敗詳情”查看原因,也可以根據請求的狀態碼,去查閱錯誤碼列表。
至此本篇內容結束。