阿里云SDK实现短信发送
生活随笔
收集整理的這篇文章主要介紹了
阿里云SDK实现短信发送
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
實(shí)現(xiàn)短信發(fā)送業(yè)務(wù)
準(zhǔn)備工作
阿里云短信服務(wù):AccessKey相關(guān)信息:短信模板/短信簽名/AccessKeyId/AccessKeySecret
1、申請(qǐng)短信模板,獲取code
?2、申請(qǐng)短信簽名
注:一般是簽名先于模板申請(qǐng),審批成功概率大?
3、申請(qǐng)ak信息
阿里云地址:獲取AccessKey - 新手上云指南 - 阿里云
配置文件(application.properties)
#SMS aliyun.sms.accessKeyId=申請(qǐng)的accessKeyId aliyun.sms.accessKeySecret=申請(qǐng)的accessKeySecret aliyun.sms.endpoint=dysmsapi.aliyuncs.com//默認(rèn)值,無(wú)需修改 aliyun.sms.verifySMS=短信模板code aliyun.sms.noticeSMS=短信模板code封裝實(shí)體類
@Component @PropertySource("classpath:application.properties") //默認(rèn)路徑下可不加 @Data @Configuration public class AliyunConfig {// sms@Value("${aliyun.sms.endpoint}")private String endpointSMS;@Value("${aliyun.sms.accessKeyId}")private String accessKeyIdSMS;@Value("${aliyun.sms.accessKeySecret}")private String accessKeySecretSMS;@Value("${aliyun.sms.verifySMS}")private String verifySMS;@Value("${aliyun.sms.noticeSMS}")private String noticeSMS;public AliyunConfig() {}public String getAccessKeyIdSMS() {return accessKeyIdSMS;}public void setAccessKeyIdSMS(String accessKeyIdSMS) {this.accessKeyIdSMS = accessKeyIdSMS;}public String getAccessKeySecretSMS() {return accessKeySecretSMS;}public void setAccessKeySecretSMS(String accessKeySecretSMS) {this.accessKeySecretSMS = accessKeySecretSMS;}public String getEndpointSMS() {return endpointSMS;}public void setEndpointSMS(String endpointSMS) {this.endpointSMS = endpointSMS;}public String getVerifySMS() {return verifySMS;}public void setVerifySMS(String verifySMS) {this.verifySMS = verifySMS;}public String getNoticeSMS() {return noticeSMS;}public void setNoticeSMS(String noticeSMS) {this.noticeSMS = noticeSMS;} }封裝實(shí)體類
public class sendSMSUtil {//生成六位數(shù)隨機(jī)驗(yàn)證碼public String getRandom(){String randNum = new Random().nextInt(1000000)+"";System.out.println("生成"+randNum);if(randNum.length()!=6){ //如果生成的不是6位數(shù)隨機(jī)數(shù)則返回該方法繼續(xù)生成return getRandom();}else{return randNum;}}//創(chuàng)建客戶端,將ak相關(guān)信息傳入值config中public static Client createClient(AliyunConfig aliyunConfig) throws Exception {Config config = new Config()// 您的AccessKey ID.setAccessKeyId(aliyunConfig.getAccessKeyIdSMS())// 您的AccessKey Secret.setAccessKeySecret(aliyunConfig.getAccessKeySecretSMS());// 訪問的域名config.endpoint = aliyunConfig.getEndpointSMS();return new Client(config);}//驗(yàn)證碼發(fā)送方法public Result verifySMS(String uphone, AliyunConfig aliyunConfig) throws Exception {Result result = new Result();JSONObject json = new JSONObject();//設(shè)置處理時(shí)間為1秒,單位為毫秒System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.client.defaultReadTimeout", "10000");//創(chuàng)建發(fā)送客戶端Client client = createClient(aliyunConfig); //生成六位隨機(jī)驗(yàn)證碼String code = getRandom();SendSmsRequest sendSmsRequest = new SendSmsRequest() //設(shè)置手機(jī)號(hào).setPhoneNumbers(uphone) //設(shè)置簽名.setSignName("你的簽名") //獲取申請(qǐng)的驗(yàn)證碼模板id.setTemplateCode(aliyunConfig.getVerifySMS()) //傳入驗(yàn)證碼模板的code值.setTemplateParam("{\"code\": \""+code+"\"}"); //獲得發(fā)送的返回SendSmsResponse response = client.sendSms(sendSmsRequest); //輸出查看返回狀態(tài)System.out.println(response.getBody().getCode()); //判斷發(fā)送情況是否成功if(response.getBody().getCode().equals("OK")){json.put("verifyCode",code);return Result.succ("發(fā)送成功",json);}else if(response.getBody().getCode().equals("isv.BUSINESS_LIMIT_CONTROL")){ //短信發(fā)送出現(xiàn)頻繁請(qǐng)求 return Result.fail("請(qǐng)勿頻繁請(qǐng)求");}else{ //其他情況,通過自定義異常拋出throw new resultException(ResultEnum.MISTAKE_BY_SENDSMS);} }調(diào)試時(shí)出現(xiàn)isp.RAM_PERMISSION_DENY報(bào)錯(cuò)
該錯(cuò)誤意味著RAM權(quán)限不足,前往阿里云開啟相關(guān)權(quán)限
前往并開啟以下兩個(gè)權(quán)限即可進(jìn)行短信發(fā)送操作
阿里云短信api返回碼
返回碼地址:API錯(cuò)誤碼 - 短信服務(wù) - 阿里云?
依賴支持:
<!-- 阿里云短信依賴支持 --> <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version> </dependency> <!-- 阿里云依賴支持 --> <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.16</version> </dependency> <!-- openapi依賴支持 版本20170525 --> <dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>2.0.4</version> </dependency> <dependency><groupId>com.aliyun</groupId><artifactId>tea-openapi</artifactId><version>0.0.19</version> </dependency> <dependency><groupId>com.aliyun</groupId><artifactId>tea-console</artifactId><version>0.0.1</version> </dependency> <dependency><groupId>com.aliyun</groupId><artifactId>darabonba-env</artifactId><version>0.1.1</version> </dependency> <dependency><groupId>com.aliyun</groupId><artifactId>tea-util</artifactId><version>0.2.11</version> </dependency> <dependency><groupId>com.aliyun</groupId><artifactId>darabonba-time</artifactId><version>0.0.1</version> </dependency> <dependency><groupId>com.aliyun</groupId><artifactId>darabonba-string</artifactId><version>0.0.3</version> </dependency> <dependency><groupId>com.aliyun</groupId><artifactId>tea</artifactId><version>[1.0.3, 2.0.0)</version> </dependency>注:依賴版本要確保正確,依賴版本不對(duì)等可能出現(xiàn)如下錯(cuò)誤
總結(jié)
以上是生活随笔為你收集整理的阿里云SDK实现短信发送的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php接入腾讯云短信SDK
- 下一篇: 简单工具类HttpUtils