調用阿里雲短信接口發送短信工具類


首先要導入阿里雲的依賴

<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.0.0</version>
</dependency>

  編寫工具類

import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class SmsUtils
{

	//產品名稱:阿里雲短信API產品,開發者無需替換
	private static final String product = "Dysmsapi";
	//產品域名,開發者無需替換
	private static final String domain = "dysmsapi.aliyuncs.com";

	/**
	 * 阿里短信服務接口
	 * 
	 */
	public static SendSmsResponse sendSms(String accessKeyId, String accessKeySecret,String phone ,String signName ,String templateCode,String data) {
		SendSmsResponse sendSmsResponse = null;

		try {
			//可自助調整超時時間
			System.setProperty("sun.net.client.defaultConnectTimeout", "5000");
			System.setProperty("sun.net.client.defaultReadTimeout", "5000");

			//初始化acsClient,暫不支持region化
/              //accessKeyId 控制台找
              //accessKeySecret 在創建用戶的時候與上面的KeyId一起出現,只出現一次,第一次要記得保存,否則后面找不到需要重新創建 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(phone); //必填:短信簽名-在短信控制台中找 request.setSignName(signName); //必填:短信模板-在短信控制台中找 request.setTemplateCode(templateCode); //可選:要發送的內容,這里data要注意格式,是map格式轉為String的 request.setTemplateParam(data); //可選:outId為提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者 request.setOutId("0"); //此處可能會拋出異常 sendSmsResponse = acsClient.getAcsResponse(request); } catch (ClientException e) { log.error("-----------調用失敗--------------"); } return sendSmsResponse; }

  

可寫個測試方法調試

 public static void main(String[] args) {

        String accessKeyId = "LTxxxxxxxxXXXXXXXUAQ";
        String accessKeySecret = "rZNxxxxxxxxXXXXXXXXKC";
        String phone  = "13xxxxxxx41";
        String signName  = "xxxx";
        String templateCode = "SMS_xxxxxxx";

       Map<String, String> map = new HashMap<String, String>();
	map.put("code", "888888");
	JSONObject obj = JSONObject.fromObject(map);
	String data = obj.toString();

        try {
            SendSmsResponse sendSmsResponse = SmsUtils.sendSms(accessKeyId,accessKeySecret,phone,signName,templateCode,data);
            System.out.println("-----------------success------------");
        } catch (Exception e) {
            System.out.println("--------------fail--------"+e);
        }
    }    

  注意:templateCode短信模塊里面的內容,例如:您有新的訂單待處理,當前狀態:${status},訂單摘要:${remark},請及時處理。

    這里有兩個參數要傳,map.put("status","xxxx"),map.put("remark","xxx"),這里map的key鍵一定要對應模板的${status}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM