1. 程式人生 > >Java專案整合阿里雲SMS簡訊介面傳送驗證碼

Java專案整合阿里雲SMS簡訊介面傳送驗證碼

public static Map MessageExecuteMethod(String mobile) throws ClientException {
//設定超時時間-可自行調整
System.setProperty(“sun.net.client.defaultConnectTimeout”, “10000”);
System.setProperty(“sun.net.client.defaultReadTimeout”, “10000”);
//初始化ascClient需要的幾個引數
final String product = “Dysmsapi”;//簡訊API產品名稱(簡訊產品名固定,無需修改)
final String domain = “

dysmsapi.aliyuncs.com”;//簡訊API產品域名(介面地址固定,無需修改)
// 替換成你的AK
final String accessKeyId = “accessKeyId”;//你的accessKeyId
final String accessKeySecret = “accessKeySecret”;//你的accessKeySecret
// 初始化ascClient,暫時不支援多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();
//使用post提交
request.setMethod(MethodType.POST);
//必填:待發送手機號。支援以逗號分隔的形式進行批量呼叫,批量上限為1000個手機號碼,批量呼叫相對於單條呼叫及時性稍有延遲,驗證碼型別的簡訊推薦使用單條呼叫的方式;傳送國際/港澳臺訊息時,接收號碼格式為00+國際區號+號碼,如“0085200000000”
request.setPhoneNumbers(mobile);
//必填:簡訊簽名-可在簡訊控制檯中找到
request.setSignName(“模板名稱”);
//必填:簡訊模板-可在簡訊控制檯中找到,傳送國際/港澳臺訊息時,請使用國際/港澳臺簡訊模版
request.setTemplateCode(“模板ID”);
//可選:模板中的變數替換JSON串,如模板內容為"親愛的 n
a m e ,
{name},您的驗證碼為
{code}“時,此處的值為 //友情提示:如果JSON中需要帶換行符,請參照標準的JSON協議對換行符的要求,比如簡訊內容中包含\r\n的情況在JSON中需要表示成\r\n,否則會導致JSON在服務端解析失敗
//request.setTemplateParam(”{“code”:“988756”}");
String msgCode = getMsgCode();
request.setTemplateParam("{“code”:"" + msgCode + “”}"); //請求失敗這裡會拋ClientException異常
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals(“OK”)) {
//請求成功
System.out.println("=success");
} else {
System.out.println("=fail===");
}
Map map = new HashMap();
map.put(“code”,sendSmsResponse.getCode());
map.put(“msgCode”,msgCode);
return map;
}

/* * 生成隨機的6位數,簡訊驗證碼

  • @return
    */
    private static String getMsgCode() {
    int n = 6;
    StringBuilder code = new StringBuilder();
    Random ran = new Random();
    for (int i = 0; i < n; i++) {
    code.append(Integer.valueOf(ran.nextInt(10)).toString());
    }
    return code.toString();
    }

public static void main(String[] args) throws ClientException {
String code = MessageExecuteMethod(“手機號”);
System.out.println(code);
}