Java阿里大于短信工具類

該工具類包含了如下功能:

  • 短信發(fā)送
  • 發(fā)送詳情查詢

工具類代碼如下:

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
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 java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * 發(fā)送短信工具類
 * @author MrXiao
 * @version 1.0.0
 */
@Configuration
@PropertySource("classpath:config/config.properties")
public class SmsUtil {
    
    //產(chǎn)品名稱:云通信短信API產(chǎn)品,固定值
    private static final String product = "Dysmsapi";
    //產(chǎn)品域名,開發(fā)者無需替換,固定值
    private static final String domain = "dysmsapi.aliyuncs.com";
    
    // 阿里云控制臺(tái)自己的AK   
    private static String accessKeyId;    
    private static String accessKeySecret;;
    // 短信簽名    
    private static String signName;
    // 短信模板: 注冊
    private static String templateCodeRegist;
    // 短信模板: 重置密碼
    private static String templateCodeResetPwd;
    // 超時(shí)時(shí)間    
    private static String defaultConnectTimeout;    
    private static String defaultReadTimeout;
    
    /**
     * 發(fā)送短信的方法
     */
    public static SendSmsResponse sendSms(String mobileCode, String smsCode) throws ClientException, IOException {        

        //可自助調(diào)整超時(shí)時(shí)間
        System.setProperty("sun.net.client.defaultConnectTimeout", defaultConnectTimeout);
        System.setProperty("sun.net.client.defaultReadTimeout", defaultReadTimeout);
        //初始化acsClient,暫不支持region化
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
        IAcsClient acsClient = new DefaultAcsClient(profile);

        //組裝請求對象-具體描述見控制臺(tái)-文檔部分內(nèi)容
        SendSmsRequest request = new SendSmsRequest();
        //必填:待發(fā)送手機(jī)號
        request.setPhoneNumbers(mobileCode);
        //必填:短信簽名-可在短信控制臺(tái)中找到
        request.setSignName(signName);
        //必填:短信模板-可在短信控制臺(tái)中找到
        request.setTemplateCode(templateCodeRegist);
        //可選:模板中的變量替換JSON串,如模板內(nèi)容為"親愛的${name},您的驗(yàn)證碼為${code}"時(shí),此處的值為
        // smsCOde為隨機(jī)驗(yàn)證碼
        request.setTemplateParam("{\"code\":\"" + smsCode + "\"}");

        //選填-上行短信擴(kuò)展碼(無特殊需求用戶請忽略此字段)
        //request.setSmsUpExtendCode("90997");

        //可選:outId為提供給業(yè)務(wù)方擴(kuò)展字段,最終在短信回執(zhí)消息中將此值帶回給調(diào)用者
        // request.setOutId("yourOutId");

        //hint 此處可能會(huì)拋出異常,注意catch
        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);

        return sendSmsResponse;
    }
    
    /**
     * 查詢短信發(fā)送詳情
     */
    public static QuerySendDetailsResponse querySendDetails(String bizId, String telphone) throws ClientException, IOException {
        
        //可自助調(diào)整超時(shí)時(shí)間
        System.setProperty("sun.net.client.defaultConnectTimeout", defaultConnectTimeout);
        System.setProperty("sun.net.client.defaultReadTimeout", defaultReadTimeout);

        //初始化acsClient,暫不支持region化
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
        IAcsClient acsClient = new DefaultAcsClient(profile);

        //組裝請求對象
        QuerySendDetailsRequest request = new QuerySendDetailsRequest();
        //必填-號碼
        request.setPhoneNumber(telphone);
        //可選-流水號
        request.setBizId(bizId);
        //必填-發(fā)送日期 支持30天內(nèi)記錄查詢,格式y(tǒng)yyyMMdd
        SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
        request.setSendDate(ft.format(new Date()));
        //必填-頁大小
        request.setPageSize(10L);
        //必填-當(dāng)前頁碼從1開始計(jì)數(shù)
        request.setCurrentPage(1L);

        //hint 此處可能會(huì)拋出異常,注意catch
        QuerySendDetailsResponse querySendDetailsResponse = acsClient.getAcsResponse(request);

        return querySendDetailsResponse;
    }

    @Value("${aliyun.accessKeyId}")
    public void setAccessKeyId(String accessKeyId) {
        SmsUtil.accessKeyId = accessKeyId;
    }

    @Value("${aliyun.accessKeySecret}")
    public void setAccessKeySecret(String accessKeySecret) {
        SmsUtil.accessKeySecret = accessKeySecret;
    }

    @Value("${aliyun.sms.signName}")
    public void setSignName(String signName) {
        SmsUtil.signName = signName;
    }

    @Value("${aliyun.sms.templateCodeRegist}")
    public void setTemplateCodeRegist(String templateCodeRegist) {
        SmsUtil.templateCodeRegist = templateCodeRegist;
    }

    @Value("${aliyun.sms.templateCodeResetPwd}")
    public void setTemplateCodeResetPwd(String templateCodeResetPwd) {
        SmsUtil.templateCodeResetPwd = templateCodeResetPwd;
    }

    @Value("${aliyun.sms.defaultConnectTimeout}")
    public void setDefaultConnectTimeout(String defaultConnectTimeout) {
        SmsUtil.defaultConnectTimeout = defaultConnectTimeout;
    }

    @Value("${aliyun.sms.defaultReadTimeout}")
    public void setDefaultReadTimeout(String defaultReadTimeout) {
        SmsUtil.defaultReadTimeout = defaultReadTimeout;
    }
    
}

配置文件代碼如下:


# Aliyun Config
# ID和Secret是通用的,在控制臺(tái)可以查看到
aliyun.accessKeyId=
aliyun.accessKeySecret=

# Aliyun SMS Config
# 短信簽名
aliyun.sms.signName=\u963F\u91CC\u4E91\u77ED\u4FE1\u6D4B\u8BD5\u4E13\u7528
# 注冊類型模板ID(阿里云控制申請)
aliyun.sms.templateCodeRegist=SMS_139355012
# 找回密碼類型模板ID(阿里云控制申請)
aliyun.sms.templateCodeResetPwd=SMS_139355011
# 配置超時(shí)時(shí)間
aliyun.sms.defaultConnectTimeout=10000
aliyun.sms.defaultReadTimeout=10000
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,027評論 25 709
  • 作為一個(gè)女人,我常常自認(rèn)為還挺優(yōu)秀的,無論干什么事都努力使其盡善盡美,愿意去追尋那種陶醉其中極致之美,哈哈還未...
    一粒珍珠閱讀 360評論 2 0
  • 剛購買電腦時(shí)便看到標(biāo)識(shí)上指出有「USB 關(guān)機(jī)充電」功能,然而卻一直沒使用成功,電腦每次關(guān)機(jī)后 USB 端口的供電便...
    Momo_Kong閱讀 1,002評論 0 1
  • 不離不棄 生死相依 生死之彼 與爾同往 燃盡風(fēng)華 為爾化作彼岸花 傾心 一生一世!
    昊ge閱讀 144評論 0 0

友情鏈接更多精彩內(nèi)容