2025-12-10 10:05:29短信通道配置与使用指南

@TOC

简介

短信通道是由中国移动、联通、电信等运营商直接提供的短信发送接口,实现与客户指定号码进行短信批量发送和自定义发送的目的

需要申请云梦网的测试账号 官方地址-新手指引:

SDK接口文档

依赖引入

梦网并没有提供线上的版本jar,需要下载下来引入

线上的版本有可能不是最新的,需要跟运营商获取最新版本的jar

com.sms

SmsSdk

5.7

com.sms

json-simple

1.1.1

com.sms

gson

2.7

yml属性配置

#短信发送参数设定

#WBS接入版 生产账号

sms:

userid:

password:

#营销账号

shoppingUserid:

shoppingPassword:

# 运营商会给的 不同的确的通道不一样

ipAddress1: 175.25.21.202:8901

ipAddress2: 120.133.237.118:8901

#短信开关

enable: true

配置类

@Component

@ConfigurationProperties(prefix="sms")

public class SmsConfig {

/**

* 用户名

*/

public static String userid;

/**

* 账号

*/

public static String password;

/**

* 主IP地址

*/

public static String ipAddress1;

/**

* 备用IP地址

*/

public static String ipAddress2;

/**

* 失败重试次数

*/

public static int retryNum = 1;

/**

* 是否开启短信发送

*/

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);

/**

* 设置全局变量

*/

static {

// 获取全局参数单例对象 启用默认值

GlobalParams globalParams = GlobalParams.getInstance();

//设置下行内容的编码类型

globalParams.setMsgMtEncode(ContentEncodeEnum.GBK);

}

/**

* @description 个性化群发

* @param message

*/

public static int mixedSend(Message message) {

//设置账号

setAccountInfo();

// 单操作 短链接

SmsSendConn smsSendConn = new SmsSendConn(false);

// 返回值

int result = -310099;

try {

// 返回的流水号

StringBuffer returnValue = new StringBuffer();

// 发送短信

result = smsSendConn.mixedSend(message, returnValue);

// result为0:成功

if (result == 0) {

log.info("个性化群发提交成功!");

}

// result为非0:失败

else {

log.info("个性化群发提交失败,错误码:{}",result);

}

} catch (Exception e) {

// 异常处理

e.printStackTrace();

}

return result;

}

/**

* 个性化群发

*

* @param mobile 手机号多个用,隔开

* @param content 短信内容

* @return int

*/

public static int mixedSend(String mobile, String content) {

Message message = buildMessage(mobile, content);

return mixedSend(message);

}

/**

* @description 相同内容群发

* @param message

* @return

*/

public static int batchSend(Message message) {

//设置账号

setAccountInfo();

// 单操作 短链接

SmsSendConn smsSendConn = new SmsSendConn(true);

// 返回值

int result = -310099;

try {

// 返回的流水号

StringBuffer returnValue = new StringBuffer();

// 发送短信

if(SmsConfig.enable){

result = smsSendConn.batchSend(message, returnValue);

}

// result为0:成功

if (result == 0) {

log.info("相同内容群发提交成功!");

System.out.println(returnValue);

}

// result为非0:失败

else {

log.info("相同内容群发提交失败,错误码:{}",result);

}

} catch (Exception e) {

// 异常处理

e.printStackTrace();

}

return result;

}

/**

* 相同内容群发

*

* @param mobile 手机号多个用,隔开

* @param content 短信内容

* @return int

*/

public static int batchSend(String mobile, String content) {

Message message = buildMessage(mobile, content);

return batchSend(message);

}

/**

* @description 单条信息的发送

* @param message

*/

public static int singleSend(Message message){

setAccountInfo();

// 单操作 短链接

SmsSendConn smsSendConn = new SmsSendConn(false);

// 返回的流水号

StringBuffer returnValue = new StringBuffer();

// 返回值

int result = -310099;

// 发送短信

if(SmsConfig.enable){

result = smsSendConn.singleSend(message, returnValue);

}

// result为0:成功

if (result == 0) {

log.info("单条发送提交成功!");

}

// result为非0:失败

else {

log.info("单条发送提交失败,错误码:{}", result);

}

return result;

}

/**

* 单条信息的发送

*

* @param mobile 手机号多个用,隔开

* @param content 短信内容

* @return int

*/

public static int singleSend(String mobile, String content) {

Message message = buildMessage(mobile, content);

return singleSend(message);

}

/**

* @description 设置用户账号信息

*/

public static void setAccountInfo() {

// 返回值

int result = -310007;

try {

// 设置用户账号信息

result = ConfigManager.setAccountInfo(SmsConfig.userid, SmsConfig.password, 1,

SmsConfig.ipAddress1, SmsConfig.ipAddress2, null, null);

// 判断返回结果,0设置成功,否则失败

if (result == 0) {

log.info("--->, 设置用户账号信息成功!");

} else {

log.info("设置用户账号信息失败,错误码:{}", result);

}

} catch (Exception e) {

// 异常处理

e.printStackTrace();

log.info("设置用户账号信息异常!" );

}

}

/**

* 构建消息体

*

* @param mobile 手机号码

* @param content 短信内容

* @return {@link Message}

*/

public static Message buildMessage(String mobile, String content) {

// 参数类

Message message = new Message();

// 设置用户账号 指定用户账号发送,需要填写用户账号,不指定用户账号发送,无需填写用户账号

message.setUserid(SmsConfig.userid);

// 设置手机号码

message.setMobile(mobile);

// 设置内容

message.setContent(content);

// 设置扩展号

message.setExno("");

// 用户自定义流水编号

message.setCustid("");

// 自定义扩展数据

message.setExdata("");

// 业务类型

message.setSvrtype("");

return message;

}