一滑黔、申請(qǐng)阿里的賬號(hào),并登陸
二、點(diǎn)擊進(jìn)入控制臺(tái)
點(diǎn)擊使用短信服務(wù)
進(jìn)入短信服務(wù)概覽頁(yè)面
點(diǎn)擊短信服務(wù)下方的javaapi文檔环揽,按照其步驟進(jìn)行操作
文檔中含有編寫樣例程序如下:
//設(shè)置超時(shí)時(shí)間-可自行調(diào)整
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化ascClient需要的幾個(gè)參數(shù)
final String product = "Dysmsapi";//短信API產(chǎn)品名稱(短信產(chǎn)品名固定略荡,無(wú)需修改)
final String domain = "dysmsapi.aliyuncs.com";//短信API產(chǎn)品域名(接口地址固定,無(wú)需修改)
//替換成你的AK
final String accessKeyId = "yourAccessKeyId";//你的accessKeyId,參考本文檔步驟2
final String accessKeySecret = "yourAccessKeySecret";//你的accessKeySecret歉胶,參考本文檔步驟2
//初始化ascClient,暫時(shí)不支持多region
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//組裝請(qǐng)求對(duì)象
SendSmsRequest request = new SendSmsRequest();
//使用post提交
request.setMethod(MethodType.POST);
//必填:待發(fā)送手機(jī)號(hào)汛兜。支持以逗號(hào)分隔的形式進(jìn)行批量調(diào)用,批量上限為1000個(gè)手機(jī)號(hào)碼,批量調(diào)用相對(duì)于單條調(diào)用及時(shí)性稍有延遲,驗(yàn)證碼類型的短信推薦使用單條調(diào)用的方式
request.setPhoneNumbers("1500000000");
//必填:短信簽名-可在短信控制臺(tái)中找到
request.setSignName("云通信");
//必填:短信模板-可在短信控制臺(tái)中找到
request.setTemplateCode("SMS_1000000");
//可選:模板中的變量替換JSON串,如模板內(nèi)容為"親愛的${name},您的驗(yàn)證碼為${code}"時(shí),此處的值為
//友情提示:如果JSON中需要帶換行符,請(qǐng)參照標(biāo)準(zhǔn)的JSON協(xié)議對(duì)換行符的要求,比如短信內(nèi)容中包含\r\n的情況在JSON中需要表示成\\r\\n,否則會(huì)導(dǎo)致JSON在服務(wù)端解析失敗
request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
//可選-上行短信擴(kuò)展碼(無(wú)特殊需求用戶請(qǐng)忽略此字段)
//request.setSmsUpExtendCode("90997");
//可選:outId為提供給業(yè)務(wù)方擴(kuò)展字段,最終在短信回執(zhí)消息中將此值帶回給調(diào)用者
request.setOutId("yourOutId");
//請(qǐng)求失敗這里會(huì)拋ClientException異常
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
//請(qǐng)求成功
}
下面進(jìn)行整合:
第一步通今、創(chuàng)建我們的maven工程粥谬,在pom.xml中導(dǎo)入我們阿里大于的依賴包肛根,以及相關(guān)的依賴:
<dependencies>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<optional>true</optional>
<version>3.2.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
</plugin>
</plugins>
</build>
第二部、打開我們下載的SDK漏策,
找到我們的com文件派哲,將其復(fù)制到我們的
路徑下面
第二部:創(chuàng)建SendMessage類,將阿里的短信模板整合掺喻,以發(fā)送驗(yàn)證碼為例
package cn.bos.send.msg;
import java.util.Date;
import java.util.ResourceBundle;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
public class SendMessage {
//產(chǎn)品名稱:云通信短信API產(chǎn)品,開發(fā)者無(wú)需替換
static final String product = "Dysmsapi";
//產(chǎn)品域名,開發(fā)者無(wú)需替換
static final String domain = "dysmsapi.aliyuncs.com";
public static SendSmsResponse sendSms(String phone,String code) throws Exception, ClientException {
//獲取配置文件對(duì)象
ResourceBundle bundle = ResourceBundle.getBundle("accessKey");
//獲取配置文件內(nèi)容
//獲取key
final String accessKeyId = bundle.getString("accessKeyId");
//獲取密鑰
final String accessKeySecret = bundle.getString("accessKeySecret");
//獲取短信簽名
String signName = bundle.getString("signName");
//獲取短信模板
String templateCode = bundle.getString("templateCode");
//可自助調(diào)整超時(shí)時(shí)間
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化acsClient,暫不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//組裝請(qǐng)求對(duì)象-具體描述見控制臺(tái)-文檔部分內(nèi)容
SendSmsRequest request = new SendSmsRequest();
//必填:待發(fā)送手機(jī)號(hào)
request.setPhoneNumbers(phone);
//必填:短信簽名-可在短信控制臺(tái)中找到
request.setSignName(signName);
//必填:短信模板-可在短信控制臺(tái)中找到
request.setTemplateCode(templateCode);
//可選:模板中的變量替換JSON串,如模板內(nèi)容為"親愛的${name},您的驗(yàn)證碼為${code}"時(shí),此處的值為
request.setTemplateParam("{\"number\":\""+code+"\"}");
//尊敬的${name}用戶您好芭届,您的快遞正在路上飛奔,將于${time}送到您的手上
// request.setTemplateParam("{\"name\":\""+code+"\"},{\"time\":\""+time+"\"}");
//可選:outId為提供給業(yè)務(wù)方擴(kuò)展字段,最終在短信回執(zhí)消息中將此值帶回給調(diào)用者
// request.setOutId("yourOutId");
System.out.println(accessKeyId);
System.out.println(accessKeySecret);
//hint 此處可能會(huì)拋出異常感耙,注意catch
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
return sendSmsResponse;
}
測(cè)試:
public static void main(String[] args) throws Exception {
sendSms("電話號(hào)碼","驗(yàn)證碼")褂乍;
}
第三部,創(chuàng)建我們的accessKeyproperites文件即硼,
accessKeyId = XXXXXXX
accessKeySecret =XXXXXXXXXX
signName=Xxx
templateCode=XXXXX #短信模板名稱逃片,根據(jù)需要引入相關(guān)的短信模板
templatemessage=xxxXX #短信模板名稱
templatemessageToStaff=XXXXX #短信模板名稱