1.創(chuàng)建AK
使用阿里云的短信服務(wù)發(fā)送短信需要用到阿里云的API,所以我們需要開通短信服務(wù)之后,創(chuàng)建AK(AccessKeyId和AccessKeySecret),也就是訪問秘鑰。
創(chuàng)建網(wǎng)址https://usercenter.console.aliyun.com/#/manage/ak
2.添加短信簽名
在短信服務(wù)的【國(guó)內(nèi)消息】的【簽名管理】中添加簽名,所謂的短信簽名就是識(shí)別發(fā)送短信的機(jī)構(gòu),一般放在短信的開頭。
3.添加模板
創(chuàng)建發(fā)送短信的模版,在【國(guó)內(nèi)消息】的【模板管理】中,添加模板,根據(jù)自己需要發(fā)送的模板類型添加設(shè)置。模板審核通過之后,我們發(fā)送消息的時(shí)候需要用到模版CODE,也就是

image.png
4.java代碼來(lái)實(shí)現(xiàn)短信的發(fā)送
1.使用阿里的短信服務(wù)首先需要添加相關(guān)的jar包
<!--添加阿里云服務(wù)相關(guān)依賴包-->
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-dysmsapi -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>
這樣我們就可以使用阿里云的sdk去調(diào)用阿里云的api中的短信發(fā)送接口了。
2.調(diào)用api的短信發(fā)送接口
public class SmsDemo {
//產(chǎn)品名稱:云通信短信API產(chǎn)品,開發(fā)者無(wú)需替換
static final String product = "Dysmsapi";
//產(chǎn)品域名,開發(fā)者無(wú)需替換
static final String domain = "dysmsapi.aliyuncs.com";
// TODO 此處需要替換成開發(fā)者自己的AK(在阿里云訪問控制臺(tái)尋找)
static final String accessKeyId = "yourAccessKeyId";
static final String accessKeySecret = "yourAccessKeySecret";
public static SendSmsResponse sendSms() throws ClientException {
//可自助調(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("15000000000");
//必填:短信簽名-可在短信控制臺(tái)中找到
request.setSignName("云通信");
//必填:短信模板-可在短信控制臺(tái)中找到
request.setTemplateCode("SMS_1000000");
//可選:模板中的變量替換JSON串,如模板內(nèi)容為"親愛的${name},您的驗(yàn)證碼為${code}"時(shí),此處的值為
request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
//選填-上行短信擴(kuò)展碼(無(wú)特殊需求用戶請(qǐng)忽略此字段)
//request.setSmsUpExtendCode("90997");
//可選:outId為提供給業(yè)務(wù)方擴(kuò)展字段,最終在短信回執(zhí)消息中將此值帶回給調(diào)用者
request.setOutId("yourOutId");
//hint 此處可能會(huì)拋出異常,注意catch
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
return sendSmsResponse;
}
}
上面就是具體的詳細(xì)的發(fā)送短信的具體代碼了,其中TemplateParam設(shè)置的時(shí)候參數(shù)是json字符串,json字符串里面的參數(shù)需要與短信模板中的參數(shù)對(duì)應(yīng),缺少不可發(fā)送短信