Java對接阿里云短信服務(wù)保姆級教程(新手秒會)
一,阿里云部分
登錄阿里云搜索短信服務(wù)進(jìn)入控制臺,進(jìn)行下面五個步驟的申請(默認(rèn)已開通服務(wù))

1. 申請資質(zhì)
資質(zhì)是申請簽名的實(shí)名化信息,需要提供企業(yè)的信息和個人信息

2. 申請簽名
簽名就是短信的標(biāo)題,如下圖中的【飛書】
要注意,每個帶星號的參數(shù)都要慎重填寫,注意關(guān)鍵信息節(jié)點(diǎn)(這里踩過坑,由于填信息不仔細(xì),審核不通過很耽誤時間)


3. 申請模版
模板就是短信的內(nèi)容,如下圖

至此,阿里云方面的準(zhǔn)備工作算是基本完成了!
注:
- 短信服務(wù)已開通,套餐要有余量
- 簽名要配置好
- 簽名對應(yīng)的模板配好
- 接下來是寫Java 來對接
二,Java 代碼部分
可以點(diǎn)擊此鏈接進(jìn)入短信接入的文檔 點(diǎn)擊調(diào)試可以生成示例代碼(如下圖)


必填參數(shù)

注:
上面生成的代碼太亂,可以使用我下面的代碼,整合成短信工具類,將需要的信息改為自己的即可
導(dǎo)入依賴
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>2.1.0</version>
</dependency>
- 工具類
public class SmsUtil {
private static final String ACCESS_KEY_ID = "";//AccessKey自己賬號的
private static final String ACCESS_KEY_SECRET = "";
private static final String ENDPOINT = "dysmsapi.aliyuncs.com";//固定死
private static final String SIGNNAME = "";//簽名名稱
private static final String TCODE = "";//模版的編號
public static String sendSms(String phoneNumbers) throws Exception {
String code=generateVerificationCode();
Config config = new Config()
.setAccessKeyId(ACCESS_KEY_ID)
.setAccessKeySecret(ACCESS_KEY_SECRET)
.setEndpoint(ENDPOINT);
Client client = new Client(config);
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers(phoneNumbers)
.setSignName(SIGNNAME)
.setTemplateCode(TCODE)
//此處是設(shè)計(jì)模版的時候預(yù)留的變量$[code]就驗(yàn)證碼,用下面的隨機(jī)生成4位數(shù)字傳入
.setTemplateParam(String.format("{\"code\":\"%s\"}", code));
try {
SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
return code;
} catch (TeaException error) {
return "失敗";
}
}
/**
* 驗(yàn)證碼隨機(jī)四位
*/
private static String generateVerificationCode() {
// 生成四位數(shù)字驗(yàn)證碼
Random random = new Random();
int code = random.nextInt(10000); // 隨機(jī)生成 0 到 9999 的整數(shù)
return String.format("%04d", code); // 保證生成的是四位數(shù)字,不足四位時前面補(bǔ)0
}
}- controller調(diào)用
/**
* 發(fā)送短信
* @param phone
* @return
*/
@RequestMapping("sendCode")
public ResultVO sendMessage(@RequestParam String phone){
try {
String code = SmsUtil.sendSms(phone);
//使用redis 存起來,過期時間300秒,用于登錄時拿出來驗(yàn)證
redisTemplate.opsForValue().set("yzm"+phone,code,300, TimeUnit.SECONDS);
return ResultUtil.success("驗(yàn)證碼發(fā)送成功");
} catch (Exception e) {
return ResultUtil.error("驗(yàn)證碼發(fā)送失敗");
}
}
完結(jié)?。。?/strong>
總結(jié)
到此這篇關(guān)于Java對接阿里云短信服務(wù)保姆級教程的文章就介紹到這了,更多相關(guān)Java對接阿里云短信服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud兩種注冊中心的實(shí)現(xiàn)
本文主要介紹了SpringCloud兩種注冊中心的實(shí)現(xiàn),包括服務(wù)注冊、服務(wù)拉取、負(fù)載均衡和實(shí)例權(quán)重配置等,具有一定的參考價值,感興趣的可以了解一下2025-01-01
Java陷阱之a(chǎn)ssert關(guān)鍵字詳解
這篇文章詳細(xì)介紹了Java陷阱之a(chǎn)ssert關(guān)鍵字,有需要的朋友可以參考一下2013-09-09
SpringBoot2零基礎(chǔ)到精通之映射與常用注解請求處理
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時也是簡化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起學(xué)習(xí)映射、常用注解和方法參數(shù)的小技巧2022-03-03
springsecurity?登錄認(rèn)證流程分析一(ajax)
這篇文章主要介紹了springsecurity?登錄認(rèn)證一(ajax篇),本文通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08

