消息之短信(云夢(mèng)網(wǎng))

@TOC

簡(jiǎn)介

短信通道是由中國(guó)移動(dòng)、聯(lián)通、電信等運(yùn)營(yíng)商直接提供的短信發(fā)送接口,實(shí)現(xiàn)與客戶指定號(hào)碼進(jìn)行短信批量發(fā)送和自定義發(fā)送的目的

需要申請(qǐng)?jiān)茐?mèng)網(wǎng)的測(cè)試賬號(hào) 官方地址-新手指引:

[SDK接口文檔:http://console.sms.monyun.cn:9963/developer_Center/index.html?htmlURL1=SDK&htmlURL2=SDKone)

依賴引入

夢(mèng)網(wǎng)并沒(méi)有提供線上的版本jar,需要下載下來(lái)引入

線上的版本有可能不是最新的,需要跟運(yùn)營(yíng)商獲取最新版本的jar

        <dependency>
            <groupId>com.sms</groupId>
            <artifactId>SmsSdk</artifactId>
            <version>5.7</version>
        </dependency>

        <dependency>
            <groupId>com.sms</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
        </dependency>

        <dependency>
            <groupId>com.sms</groupId>
            <artifactId>gson</artifactId>
            <version>2.7</version>
        </dependency>

yml屬性配置

#短信發(fā)送參數(shù)設(shè)定
#WBS接入版  生產(chǎn)賬號(hào)
sms:
  userid: 
  password: 
  #營(yíng)銷賬號(hào)
  shoppingUserid: 
  shoppingPassword: 
  # 運(yùn)營(yíng)商會(huì)給的 不同的確的通道不一樣
  ipAddress1: 175.25.21.202:8901
  ipAddress2: 120.133.237.118:8901
  #短信開(kāi)關(guān)
  enable: true 

配置類

@Component
@ConfigurationProperties(prefix="sms")
public class SmsConfig {

    /**
     * 用戶名
     */
    public static String userid;
    /**
     * 賬號(hào)
     */
    public static String password;
    /**
     *  主IP地址
     */
    public static String ipAddress1;
    /**
     *  備用IP地址
     */
    public static String ipAddress2;

    /**
     * 失敗重試次數(shù)
     */
    public static int retryNum = 1;

    /**
     *  是否開(kāi)啟短信發(fā)送
     */
    public static Boolean enable;

    public void setUserid(String userid) {
        SmsConfig.userid = userid;
    }

    public void setPassword(String password) {
        SmsConfig.password = password;
    }

    public void setIpAddress1(String ipAddress1) {
        SmsConfig.ipAddress1 = ipAddress1;
    }

    public void setIpAddress2(String ipAddress2) {
        SmsConfig.ipAddress2 = ipAddress2;
    }

    public void setEnable(Boolean enable) {
        SmsConfig.enable = enable;
    }
}

工具類

@Component
public class SmsUtil {

    private static final Logger log = LoggerFactory.getLogger(SmsUtil.class);

    /**
     * 設(shè)置全局變量
     */
    static {
        // 獲取全局參數(shù)單例對(duì)象 啟用默認(rèn)值
        GlobalParams globalParams = GlobalParams.getInstance();
        //設(shè)置下行內(nèi)容的編碼類型
        globalParams.setMsgMtEncode(ContentEncodeEnum.GBK);
    }

    /**
     * @description 個(gè)性化群發(fā)
     * @param message
     */
    public static int mixedSend(Message message) {
        //設(shè)置賬號(hào)
        setAccountInfo();
        // 單操作 短鏈接
        SmsSendConn smsSendConn = new SmsSendConn(false);
        // 返回值
        int result = -310099;
        try {
            // 返回的流水號(hào)
            StringBuffer returnValue = new StringBuffer();

            // 發(fā)送短信
            result = smsSendConn.mixedSend(message, returnValue);
            // result為0:成功
            if (result == 0) {
                log.info("個(gè)性化群發(fā)提交成功!");
            }
            // result為非0:失敗
            else {
                log.info("個(gè)性化群發(fā)提交失敗,錯(cuò)誤碼:{}",result);
            }

        } catch (Exception e) {
            // 異常處理
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 個(gè)性化群發(fā)
     *
     * @param mobile  手機(jī)號(hào)多個(gè)用,隔開(kāi)
     * @param content 短信內(nèi)容
     * @return int
     */
    public static int mixedSend(String mobile, String content) {
        Message message = buildMessage(mobile, content);
        return mixedSend(message);
    }

    /**
     * @description 相同內(nèi)容群發(fā)
     * @param message
     * @return
     */
    public static int batchSend(Message message) {
        //設(shè)置賬號(hào)
        setAccountInfo();
        // 單操作 短鏈接
        SmsSendConn smsSendConn = new SmsSendConn(true);
        // 返回值
        int result = -310099;
        try {
            // 返回的流水號(hào)
            StringBuffer returnValue = new StringBuffer();
            // 發(fā)送短信
            if(SmsConfig.enable){
                result = smsSendConn.batchSend(message, returnValue);
            }
            // result為0:成功
            if (result == 0) {
                log.info("相同內(nèi)容群發(fā)提交成功!");
                System.out.println(returnValue);
            }
            // result為非0:失敗
            else {
                log.info("相同內(nèi)容群發(fā)提交失敗,錯(cuò)誤碼:{}",result);
            }

        } catch (Exception e) {
            // 異常處理
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 相同內(nèi)容群發(fā)
     *
     * @param mobile  手機(jī)號(hào)多個(gè)用,隔開(kāi)
     * @param content 短信內(nèi)容
     * @return int
     */
    public static int batchSend(String mobile, String content) {
        Message message = buildMessage(mobile, content);
        return batchSend(message);
    }

    /**
     * @description 單條信息的發(fā)送
     * @param message
     */
    public static int singleSend(Message message){
        setAccountInfo();
        // 單操作 短鏈接
        SmsSendConn smsSendConn = new SmsSendConn(false);

        // 返回的流水號(hào)
        StringBuffer returnValue = new StringBuffer();
        // 返回值
        int result = -310099;
        // 發(fā)送短信
        if(SmsConfig.enable){
            result = smsSendConn.singleSend(message, returnValue);
        }
        // result為0:成功
        if (result == 0) {
            log.info("單條發(fā)送提交成功!");
        }
        // result為非0:失敗
        else {
            log.info("單條發(fā)送提交失敗,錯(cuò)誤碼:{}", result);
        }
        return result;
    }

    /**
     * 單條信息的發(fā)送
     *
     * @param mobile  手機(jī)號(hào)多個(gè)用,隔開(kāi)
     * @param content 短信內(nèi)容
     * @return int
     */
    public static int singleSend(String mobile, String content) {
        Message message = buildMessage(mobile, content);
        return singleSend(message);
    }

    /**
     * @description 設(shè)置用戶賬號(hào)信息
     */
    public static void setAccountInfo() {
        // 返回值
        int result = -310007;
        try {
            // 設(shè)置用戶賬號(hào)信息
            result = ConfigManager.setAccountInfo(SmsConfig.userid, SmsConfig.password, 1,
                    SmsConfig.ipAddress1, SmsConfig.ipAddress2, null, null);
            // 判斷返回結(jié)果,0設(shè)置成功,否則失敗
            if (result == 0) {
                log.info("--->, 設(shè)置用戶賬號(hào)信息成功!");
            } else {
                log.info("設(shè)置用戶賬號(hào)信息失敗,錯(cuò)誤碼:{}", result);
            }
        } catch (Exception e) {
            // 異常處理
            e.printStackTrace();
            log.info("設(shè)置用戶賬號(hào)信息異常!" );
        }
    }

    /**
     * 構(gòu)建消息體
     *
     * @param mobile  手機(jī)號(hào)碼
     * @param content 短信內(nèi)容
     * @return {@link Message}
     */
    public static Message buildMessage(String mobile, String content) {
        // 參數(shù)類
        Message message = new Message();
        // 設(shè)置用戶賬號(hào) 指定用戶賬號(hào)發(fā)送,需要填寫(xiě)用戶賬號(hào),不指定用戶賬號(hào)發(fā)送,無(wú)需填寫(xiě)用戶賬號(hào)
        message.setUserid(SmsConfig.userid);
        // 設(shè)置手機(jī)號(hào)碼
        message.setMobile(mobile);
        // 設(shè)置內(nèi)容
        message.setContent(content);
        // 設(shè)置擴(kuò)展號(hào)
        message.setExno("");
        // 用戶自定義流水編號(hào)
        message.setCustid("");
        // 自定義擴(kuò)展數(shù)據(jù)
        message.setExdata("");
        // 業(yè)務(wù)類型
        message.setSvrtype("");
        return message;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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