# sms-integration
**Repository Path**: mirrors/sms-integration
## Basic Information
- **Project Name**: sms-integration
- **Description**: sms-integration 是一个基于 SMGP3.4 协议、CMPP 协议的短信发送框架
- **Primary Language**: Java
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: https://www.oschina.net/p/sms-integration
- **GVP Project**: No
## Statistics
- **Stars**: 13
- **Forks**: 7
- **Created**: 2020-04-03
- **Last Updated**: 2026-01-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# sms-integration
基于SMGP3.4协议、CMPP协议的短信发送框架


[](https://www.codacy.com/manual/otary/sms-integration?utm_source=github.com&utm_medium=referral&utm_content=otary/sms-integration&utm_campaign=Badge_Grade)
[](https://travis-ci.org/otary/sms-integration)
## 特性
- [x] 支持SMGP3.4协议、CMPP协议
## 文档
[中文文档](https://otary.github.io/sms-integration/)
## 依赖
``` xml
cn.chenzw.sms
sms-core
1.0
cn.chenzw.sms
sms-spring
1.0
```
## SMGP协议
### 核心类
- SMGPConnection
### 示例
> 简单代码
``` java
import cn.chenzw.sms.core.Connection;
import cn.chenzw.sms.core.Message;
import cn.chenzw.sms.core.Session;
import cn.chenzw.sms.core.protocol.smgp.SMGPConnection;
SMGPConnection conn = new SMGPConnection();
conn.setClientId("xxx"); // 帐号
conn.setPassword("yyy"); // 密码
conn.setVersion((byte) 0);
conn.setAutoReconnect(true);
conn.setSendInterval(200);
conn.connect("222.66.24.235", 8900); // 短信网关IP和端口
if (conn.isConnected()) {
Session session = conn.getSession();
try {
for (int i = 0; i < 3; i++) {
session.submit("第" + i + "条短信内容", "1065902100612", "18046048466");
}
} finally {
try {
Thread.sleep(3000L);
} catch (InterruptedException ex) {}
try {
session.close();
} catch (IOException ex) { }
}
}
```
> 携带自定义ID并注册回调函数
``` java
SMGPConnection conn = new SMGPConnection();
conn.setClientId("xxx");
conn.setPassword("yyy");
conn.setHost("222.66.24.235");
conn.setPort(8900);
conn.setVersion((byte) 0);
conn.setAutoReconnect(true);
conn.setSendInterval(200);
conn.connect();
// 注册全局回调函数
conn.registerCallbackHandler(new ConnectionCallback() {
@Override
public void onLoginSuccess(Connection connection, Message message) {
log.info("login success:" + message);
}
@Override
public void onLoingFailure(Connection connection, Message message) {
log.info("login failure:" + message);
}
});
if (conn.isConnected()) {
Session session = conn.getSession();
// 注册会话级回调函数
session.registerCallbackHandler(new SubmitCallback() {
@Override
public void onSendSuccess(Connection connection, Message message) {
log.info("send success:{}", message);
}
@Override
public void onSendFailure(Connection connection, Message message) {
log.info("send failure:{}", message);
}
});
try {
session.submit("xxx001", "测试内容1", "1065902100612", "18046048466");
session.submit("xxx002", "测试内容2", "1065902100612", "18046048466");
} finally {
try {
Thread.sleep(3000L);
session.close();
} catch (InterruptedException ex) {
ex.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
### 与Spring集成
#### 1)添加sms-spring依赖
```` xml
cn.chenzw.sms
sms-integration
1.0
````
#### 2)注册SMGPConnectionFactoryBean
> XML配置方式
``` xml
```
> Java配置方式
``` java
@Configuration
public class AppConfig {
@Bean
public SMGPConnectionFactoryBean smgpConnectionFactoryBean() throws Exception {
SMGPConnectionFactoryBean smgpConnectionFactoryBean = new SMGPConnectionFactoryBean();
smgpConnectionFactoryBean.setHost("");
smgpConnectionFactoryBean.setPassword("");
smgpConnectionFactoryBean.setClientId("");
smgpConnectionFactoryBean.setPort(8990);
smgpConnectionFactoryBean.setVersion(0);
smgpConnectionFactoryBean.setAutoReconnect(true);
smgpConnectionFactoryBean.setSendInterval(200);
return smgpConnectionFactoryBean;
}
}
```
#### 3)注入SMGPConnectionFactoryBean
```` java
@Autowired
SMGPConnection smgpConnection;
// ....
````
------
## CMPP协议
### 核心类
- CMPPConnection
### 示例
``` java
CMPPConnection conn = new CMPPConnection();
conn.setSourceAddr("123456");
conn.setPassword("aaa001");
conn.setVersion((byte) 0);
conn.setAutoReconnect(true);
conn.setSendInterval(200);
conn.connect("127.0.0.1", 7890);
if (conn.isConnected()) {
Session session = conn.getSession();
String[] phones = new String[]{"13162645136"};
long startTime = System.currentTimeMillis();
try {
for (int i = 0; i < phones.length * 10; i++) {
String content = String.format("第%d条:电信cmpp测试X(%s)", i + 1, format.format(new Date()));
session.submit(content, "1065902100612", phones[i / 10]);
}
} finally {
log.info(String.format("total:%d", System.currentTimeMillis() - startTime));
}
}
```