實現阿里云云通訊發送短信驗證碼,首先須要在阿里雲平臺申請短信簽名、短信模板、accessKeyId和accessKeySecret。html
具體信息以下:
短信模板:「您的金庫驗證碼爲${code},3分鐘有效,打死不要告訴劫匪哦!」
短信模板code:「SMS_142953888」
短信簽名:「來錢快」
AccessKeyID : 「LTAI85Zw4Byqfuck」
AccessKeySecret: L7j2alfhjF6lXG8YReV2ho9106fuckjava
依賴項:spring
可下載官方sdk包(https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.2.8.3b1e5777IIZpea),
或者加入maven依賴以下:api
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.7.1</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId> <version>1.1.0</version> </dependency>
具體代碼參照官方demo,以下:dom
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.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.UnsupportedEncodingException; /** * Created on 17/6/7. * 短信API產品的DEMO程序,工程中包含了一個SmsDemo類,直接經過 * 執行main函數便可體驗短信產品API功能(只須要將AK替換成開通了雲通訊-短信產品功能的AK便可) * 工程依賴了2個jar包(存放在工程的libs目錄下) * 1:aliyun-java-sdk-core.jar * 2:aliyun-java-sdk-dysmsapi.jar * <p> * 備註:Demo工程編碼採用UTF-8 * 國際短信發送請勿參照此DEMO */ @Component public class SmsSender { private final Logger logger = LoggerFactory.getLogger(this.getClass()); //產品名稱:雲通訊短信API產品,開發者無需替換 private final String product = "Dysmsapi"; //產品域名,開發者無需替換 private final String domain = "dysmsapi.aliyuncs.com"; //短信簽名 @Value("${sms.sign.name}") private String signName; //短信模板 @Value("${sms.template.code}") private String templateCode; @Value("${sms.access.key.id}") private String accessKeyId; @Value("${sms.access.key.secret}") private String accessKeySecret; /* * sendSms * @description:短信 * @author 李陽 * @date 2018/8/31 * @params [mobile, code] * @return com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse */ public SendSmsResponse sendSms(String mobile, String code) { //可自助調整超時時間 System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); System.setProperty("sun.net.client.defaultReadTimeout", "10000"); SendSmsResponse sendSmsResponse = null; try { //初始化acsClient,暫不支持region化 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); //組裝請求對象-具體描述見控制檯-文檔部份內容 SendSmsRequest request = new SendSmsRequest(); //必填:待發送手機號 request.setPhoneNumbers(mobile.trim()); //必填:短信簽名-可在短信控制檯中找到 request.setSignName(signName); //必填:短信模板-可在短信控制檯中找到 request.setTemplateCode(templateCode); //可選:模板中的變量替換JSON串,如模板內容爲"親愛的god,您的驗證碼爲${code}"時,此處的值爲 request.setTemplateParam("{\"code\":\"" + code + "\"}"); //選填-上行短信擴展碼(無特殊需求用戶請忽略此字段) // request.setSmsUpExtendCode("90997"); //可選:outId爲提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者 // request.setOutId("yourOutId"); //hint 此處可能會拋出異常,注意catch sendSmsResponse = acsClient.getAcsResponse(request); } catch (ClientException e) { logger.error(e.getMessage(), e); } return sendSmsResponse; } public static void main(String[] args) throws ClientException, InterruptedException, UnsupportedEncodingException { //發短信 SendSmsResponse response = new SmsSender().sendSms("19916417737", "88888"); System.out.println("短信接口返回的數據----------------"); System.out.println("Code=" + response.getCode()); System.out.println("Message=" + response.getMessage()); System.out.println("RequestId=" + response.getRequestId()); System.out.println("BizId=" + response.getBizId()); } }
短信內容以下:
【來錢快】您的金庫驗證碼爲8888,3分鐘有效,打死不要告訴劫匪哦!maven
可參考官網:https://help.aliyun.com/document_detail/55284.html?spm=5176.10629532.106.1.2ba31cbef9Zu6c函數