# SUBMAIL-JAVA-SDK-AND-DEMOS
**Repository Path**: wsldwps/SUBMAIL-JAVA-SDK-AND-DEMOS
## Basic Information
- **Project Name**: SUBMAIL-JAVA-SDK-AND-DEMOS
- **Description**: https://www.mysubmail.com/chs/documents/developer/yQZyA
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-03-20
- **Last Updated**: 2020-12-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# SUBMAIL_JAVA_SDK
> ### 概览
- jdk版本:jdk1.6及以上
- 代码编码格式:utf-8
- 需导入 json 包和 http 请求处理包
---
> ### 下载
[SUBMAIL_JAVA_SDK_AND_DEMOS](https://github.com/dev-submail/SUBMAIL-JAVA-SDK-AND-DEMOS) [前往Github下载](https://github.com/dev-submail/SUBMAIL-JAVA-SDK-AND-DEMOS)
---
> ### 文件目录索引
```
Config包 --- 处理用户的配置信息 -----------------------------------------------------
|
| --- AppConfig.java(所有配置类的父类)
| --- MailConfig(邮件配置类)
| --- MessageConfig(短信配置类)
| --- VoiceConfig(语音配置类)
| --- InternationalsmsConfig(国际短信配置类)
| --- MMSConfig(彩信配置类)
demo --- 示例代码 --------------------------------------------------
|
| --- AddressbookMailSubscribeDemo.java
| --- AddressbookMailUnsubscribeDemo.java
| --- AddressbookMessageSubscribeDemo.java
| --- AddressbookMessageUnsubscribeDemo.java
| --- MessageSendDemo.java
| --- MessageXSendDemo.java
| --- MessageMultiXsendDemo.java
| --- MessageMultiSendDemo.java
| --- MessageTemplateDemo.java
| --- MessageLogDemo.java
| --- MessageBalanceDemo.java
| --- MailSendDemo.java
| --- MailXSendDemo.java
| --- MailBalanceDemo.java
| --- InternationalsmsSendDemo.java
| --- InternationalsmsXsendDemo.java
| --- InternationalsmsMultiXsendDemo.java
| --- VerifyphonenumberDemo.java
| --- VoiceSendDemo.java
| --- VoiceXSendDemo.java
| --- VoiceMultiXSendDemo.java
| --- VoiceVerifyDemo.java
| --- VoiceBalanceDemo.java
| --- MMSXSendDemo.java
| --- MMSMultiXSendDemo.java
Entity 包 --- 实体类 --------------------------------------------------
| --- DataStore.java(封装请求数据)
lib 包 --- SDK 资源目录 --------------------------------------------------
| --- ADDRESSBOOKMail.java
| --- ADDRESSBOOKMessage.java
| --- Message.java
| --- MessageSend.java
| --- MessageXSend.java
| --- MessageMultiXsend.java
| --- MessageMultiSend.java
| --- MessageTemplate.java
| --- MessageLog.java
| --- MessageBalance.java
| --- Mail.java
| --- MailSend.java
| --- MailXSend.java
| --- MailBalance.java
| --- Internationalsms.java
| --- InternationalsmsSend.java
| --- InternationalsmsXsend.java
| --- InternationalsmsMultiXsend.java
| --- Voice.java
| --- Verifyphonenumber.java
| --- VoiceSend.java
| --- VoiceXSend.java
| --- VoiceMultiXSend.java
| --- VoiceVerify.java
| --- VoiceBalance.java
| --- MMSXSend.java
| --- MMSMultiXSend.java
base 包 --- 接口及 lib 父类包 --------------------------------------------------
| --- Isender.java(接口,定义了 send,xsend,subscribe,unsubscribe等)
| --- Sender.java(Mail 和 Message 等的父类)
| --- SenderWapper.java(包装类,ADDRESSBOOKMail、ADDRESSBOOKMessage、MAILSend、MAILXSend、MESSAGEXsend等的父类)
| ----------------------------------------------------------
Utils 包 --- 工具类 --------------------------------------------------
| --- ConfigLoader.java(从配置文件中读取数据到配置对象)
| --- StringUtil.java(字符串的处理类)
| --- RequestEncoder.java(处理请求数据)
配置文件 --------------------------------------------------
| --- app_config.properties(邮件和短信配置数据)
```
---
> ### 类关系图

---
>### 开始使用
#### 引入jar包
```
commons-beanutils-1.7.0.jar
commons-collections-3.2.1.jar
commons-lang-2.3.jar
commons-logging-1.1.1.jar
ezmorph-1.0.3.jar
json-lib-2.2.3-jdk15.jar
org.apache.httpcomponents.httpclient_4.3.5.jar
```
---
#### MailSend 类
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Mail);
- MAILSend submail = new MAILSend(config);
**使用指引:**
方法 | 描述
---|---
addTo | 添加邮件地址到 To 数组,第一个必选参数:邮件地址。第二个可选参数:收件人姓名
addAddressBook | 添加地址薄标识到 addressbook 数组
setSender | 设置发件人,第一个必选参数:邮件地址。第二个可选参数:显示名称
setReply | 设置回复地址
addCc | 添加抄送地址
addBcc | 添加密送地址
setSubject | 设置邮件标题
setText | 设置文本邮件内容
setHtml | 设置 HTML 邮件内容
addVar | 添加文本变量到 vars 数组
addLink | 添加超链接变量到 links 数组
addHeaders | 添加自定义邮件头指令到 headers 数组
addAttachment | 添加附件到 attachments 数组
addTag | 添加项目标记,此参数用于标记一次 API 请求(最大长度不超过 32 位)添加了 tag 参数的 API 请求,会在所有的 SUBHOOK 事件中携带此参数。
send | 发送邮件
**代码示列:**
```
使用 MailSend 类提交 mail/send 发送一封简单的邮件
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Mail);
MAILSend submail = new MAILSend(config);
// submail.addTo("leo@submail.cn","leo");
submail.addTo("leo@submail.cn","leo");
submail.addCc("mailer@submail.cn", "");
submail.addBcc("leo@drinkfans.com", "");
submail.setSender("no-reply@submail.cn","SUBMAIL");
submail.setReply("service@submail.cn");
submail.setSubject("test SDK");
submail.setText("test SDK text");
submail.addAttachment("D:\\Program Files\\eclipse-php-luna-SR1-win32\\eclipse\\epl-v10.html");
submail.setHtml("test SDK html @var(name),@var(age) testLink testLink2");
submail.addVar("name", "leo");
submail.addVar("age", "32");
submail.addLink("developer", "http://submail.cn/chs/developer");
submail.addLink("store", "http://submail.cn/chs/store");
submail.addHeaders("X-Accept", "zh-cn");
submail.addHeaders("X-Mailer", "leo App");
submail.send();
```
---
#### MailXSend
##### 初始化
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Mail);
- MAILXSend submail = new MAILXSend(config);
**使用指引:**
方法 | 描述
---|---
addTo | 添加邮件地址到 To 数组,第一个必选参数:邮件地址。第二个可选参数:收件人姓名
setSender | 设置发件人,第一个必选参数:邮件地址。第二个可选参数:显示名称
setReply | 设置回复地址
addCc | 添加抄送地址
addBcc | 添加密送地址
setSubject | 设置邮件标题
setProject | 设置邮件项目标识
addVar | 添加文本变量到 vars 数组
addLink | 添加超链接变量到 links 数组
addHeaders | 添加自定义邮件头指令到 headers 数组
addAttachment | 添加附件到 attachments 数组
addTag | 添加项目标记,此参数用于标记一次 API 请求(最大长度不超过 32 位)添加了 tag 参数的 API 请求,会在所有的 SUBHOOK 事件中携带此参数。
getSender | 获取发送方式
xsend | 发送邮件
**代码示例:**
```
使用 MAILXsend 类提交 mail/xsend 发送一封邮件。
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Mail);
MAILXSend submail = new MAILXSend(config);
submail.addTo("leo@submail.cn","leo");
// submail.setSender("no-reply@submail.cn","SUBMAIL");
submail.setProject("uigGk1");
submail.addVar("name", "leo");
submail.addVar("age", "32");
submail.addLink("developer", "http://submail.cn/chs/developer");
submail.addLink("store", "http://submail.cn/chs/store");
submail.addHeaders("X-Accept", "zh-cn");
submail.addHeaders("X-Mailer", "leo App");
submail.xsend();
```
---
#### MailBalance
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Mail);
- MessageBalance submail = new MessageBalance(config);
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Mail);
MailBalance submail = new MailBalance(config);
System.out.println(submail.balance());
```
---
#### MessageSend 类
#### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Message);
- MessageSend submail = new MessageSend(config);
**使用指引:**
方法 | 描述
---|---
addTo | 添加手机联系人
addContent | 添加短信正文(传入的短信正文需要与模板匹配,匹配度为75%左右)
getSender | 获取发送方式
send | 发送短信
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Message);
MessageSend submail = new MessageSend(config);
submail.addTo("176****9");
submail.addContent("【test2】你好,你的验证码是3373");
submail.send();
```
---
#### MessageXSend 类
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Message);
- MESSAGEXsend submail = new MESSAGEXsend(config);
**使用指引:**
方法 | 描述
---|---
addTo | 添加手机联系人
setProject | 设置项目Id
addVar | 添加文本变量到 vars 数组
getSender | 获取发送方式
xsend | 发送短信
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Message);
MESSAGEXsend submail = new MESSAGEXsend(config);
submail.addTo("176XXXXXXX");
submail.setProject("w3nla3");
submail.addVar("code", "张三");
submail.addVar("minue", "2289");
String response=submail.xsend();
System.out.println("接口返回数据:"+response);
```
---
#### MessageMultiSend 类
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Message);
- MessageMultiSend submail = new MessageMultiSend(config);
**使用指引:**
方法 | 描述
---|---
addContent | 添加群发文本,文本中可以设置动态变量。
addMulti| 设置多个发送对象信息
getSender | 获取发送方式
multiSend| 发送短信
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Message);
MessageMultiSend submail = new MessageMultiSend(config);
submail.addContent("【SUBMAIL】您好,您的验证码是@var(code),请在@var(time)分钟内输入");
JSONObject json = new JSONObject();
json.put("code", "1111");
json.put("time", "1分钟");
submail.addVars(json);
submail.addMulti("1760xxxx15149");
JSONObject json2 = new JSONObject();
json2.put("code", "2222");
json2.put("time", "1分钟");
submail.addVars(json2);
submail.addMulti("1822xxxx949");
String response = submail.multixsend();
System.out.println("接口返回消息:" + response);
```
---
#### MessageMultiXSend 类
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Message);
- MessageMultiSend submail = new MessageMultiSend(config);
**使用指引:**
方法 | 描述
---|---
addProject | 设置项目Id
addMulti| 设置多个发送对象信息
getSender | 获取发送方式
multiXSend| 发送短信
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Message);
MessageMultiSend submail = new MessageMultiSend(config);
submail.addContent("【SUBMAIL】您好,您的验证码是@var(code),请在@var(time)分钟内输入");
JSONObject json = new JSONObject();
json.put("code", "1111");
json.put("time", "1分钟");
submail.addVars(json);
submail.addMulti("176xxxxx");
JSONObject json2 = new JSONObject();
json2.put("code", "2222");
json2.put("time", "1分钟");
submail.addVars(json2);
submail.addMulti("182xxxxx");
String response = submail.multixsend();
System.out.println("接口返回消息:" + response);
```
---
#### MessageTemplate 类
**使用指引:**
方法 | 描述
---|---
getTemplateId | get方法获取模板信息时,传入模板id
putTemplateId| put请求,修改需要更新的模板id
putSmsTitle | put请求,修改模板标题
putSmsSignature| put请求,修改短信模板签名
putSmsContent | put请求,修改短信模板正文
delTemplateId| Delete请求,传入需要删除的模板id
postSmsTitle | post请求,提交模板标题。
postSmSSignature| post请求,提交短信模板签名
postSmsContent| post请求,提交短信模板正文
getSender | 获取发送方式
getTemplate | 通过get获取短信模板信息
putTemplate | 通过put发送请求来修改已存在模板信息
delTemplate | 删除一个现有模板
postTemplate | 提交一个新的模板
**代码示列:**
```
//get方法
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Message);
MessageTemplate submail = new MessageTemplate(config);
// submail.getTemplateId("w3nya3");
// submail.getTemplate();
//post方法
// submail.postSmsTitle("张三");
// submail.postSmsSignature("【测试短信】");
// submail.postSmsContent("您好你的验证码是@var(code),请在1分钟之内完成输入");
// submail.postTemplate();
//put
submail.putTemplateId("w3nya3");
submail.putSmsTitle("张三");
submail.putSmsSignature("【测试短信2】");
submail.putSmsContent("您好你的验证码是@var(code),请在@var(minue)分钟之内完成输入");
submail.putTemplate();
//del
// submail.delTemplateId("384hA1");
// submail.delTemplate();
```
---
#### MessageLog类
##### 初始化:
MessageLog submail = new MessageLog(config);
**使用指引:**
方法 | 描述
---|---
addRecipient | 添加联系人
addProject| 添加项目标识
addResult_status | 添加发送状态(delivered , dropped)
addStart_data| 添加日志查询的开始时间(使用 UNIX 时间戳格式)
addEnd_data | 添加日志查询的结束时间(使用 UNIX 时间戳格式)
addOrder_by| 添加返回数据时执行的升序或降序(asc or desc)
addRows | 添加单次返回数据的行数
addOffset| 添加数据偏移指针
getSender | 获取发送方式
log |发送请求获取短信日志
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Message);
MessageLog submail = new MessageLog(config);
submail.setProject("project","w3nla3");
submail.addStartDate("start_date",UnixStamp.date2TimeStamp("2017-08-12 00:00:00","yyyy-MM-dd HH:mm:ss"));
submail.addEndDate("end_date",UnixStamp.date2TimeStamp("2017-11-13 00:00:00","yyyy-MM-dd HH:mm:ss"));
String response=submail.log();
System.out.println("接口返回数据:"+response);
```
---
#### VoiceSend类
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Voice);
- VoiceSend submail = new VoiceSend(config);
**使用指引:**
方法 | 描述
---|---
addTo | 设值语音收件人手机号码
addContent| 设置语音发送正文
getSender | 获取发送方式
send| 发送语音
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Voice);
VoiceSend submail = new VoiceSend(config);
submail.addTo("176****49");
submail.addContent("欢迎来到中国,welcome to china");
submail.send();
System.out.println(submail.send());
```
---
#### VoiceXSend类
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Voice);
- VoiceXSend submail = new VoiceXSend(config);
**使用指引:**
方法 | 描述
---|---
addTo | 设值语音收件人手机号码
addProject| 设置语音发送模板
addVar | 添加文本变量到 vars 数组
getSender | 获取发送方式
xsend| 发送语音
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Voice);
VoiceXSend submail = new VoiceXSend(config);
submail.addTo("176*****49");
submail.addProject("WZlIv3");
submail.addVars("name","张三");
submail.addVars("code","2244");
submail.xsend();
```
---
#### VoiceMultiXSend类
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Voice);
- VoiceMultiXSend submail = new VoiceMultiXSend(config);
**使用指引:**
方法 | 描述
---|---
addProject| 设置语音发送模板
addMulti | 设置多个发送对象信息
getSender | 获取发送方式
multiXSend| 群发语音
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Voice);
VoiceMultiXSend submail = new VoiceMultiXSend(config);
submail.addProject("g8crk1");
JSONObject json=new JSONObject();
json.put("name", "张三");
json.put("code", "1123");
json.put("time", "1分钟");
submail.addVars(json);
submail.addMulti("+182XXXX040");
JSONObject json2=new JSONObject();
json2.put("name", "老江");
json2.put("code", "11244");
json2.put("time", "1分钟");
submail.addVars(json2);
submail.addMulti("+1825XXXXX040");
String response=submail.multixsend();
System.out.println("接口返回消息:"+response);
```
---
#### VoiceVerify类
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Voice);
- VoiceVerify submail = new VoiceVerify(config);
**使用指引:**
方法 | 描述
---|---
addTo| 设置语音验证码接收用户的手机号码
addCode | 设置语音验证码内容
getSender | 获取发送方式
verify | 发送语音验证码
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Voice);
VoiceVerify submail = new VoiceVerify(config);
submail.addTo("176*****49");
submail.addCode("3322");
submail.verify();
```
---
#### InternationalSmsSend类
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Internationalsms);
- InternationalsmsSend submail = new InternationalsmsSend(config);
**使用指引:**
方法 | 描述
---|---
addTo| 设置国际短信接收用户的手机号码
addContent | 设置国际短信正文内容
getSender | 获取发送方式
send | 发送短信
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Internationalsms);
InternationalsmsSend submail = new InternationalsmsSend(config);
submail.addTo("+176*****49");
submail.addContent("您的验证码是:3345");
submail.send();
```
---
#### InternationalXSendSms类
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Internationalsms);
- InternationalsmsXSend submail = new InternationalsmsXSend(config);
**使用指引:**
方法 | 描述
---|---
addTo| 设置国际短信接收用户的手机号码
addProject | 设置国际短信模板
addVar | 添加文本变量到 vars 数组
getSender | 获取发送方式
xsend | 发送短信
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Internationalsms);
InternationalsmsXSend submail = new InternationalsmsXSend(config);
submail.addTo("+176****49");
submail.addProject("w3nla3");
submail.addVars("name","李四");
submail.addVars("code","2299");
submail.xsend();
```
---
#### InternationalSmsMultiXSend类
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Internationalsms);
- InternationalsmsMultiXSend submail = new InternationalsmsMultiXSend(config);
**使用指引:**
方法 | 描述
---|---
addProject | 设置国际短信模板
addMulti | 设置多个发送对象信息
getSender | 获取发送方式
multiXSend | 发送短信
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.Internationalsms);
InternationalsmsMultiXSend submail = new InternationalsmsMultiXSend(config);
submail.addProject("g8crk1");
JSONObject json=new JSONObject();
json.put("name", "张三");
json.put("code", "1123");
json.put("time", "1分钟");
submail.addVars(json);
submail.addMulti("+1825xxxx2040");
JSONObject json2=new JSONObject();
json2.put("name", "老江");
json2.put("code", "11244");
json2.put("time", "1分钟");
submail.addVars(json2);
submail.addMulti("+182xxxx12040");
String response=submail.multixsend();
System.out.println("接口返回消息:"+response);
```
---
#### MMSXSend 类
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.MMS);
- MMSXSend submail = new MMSXSend(config);
**使用指引:**
方法 | 描述
---|---
addTo | 添加手机联系人
setProject | 设置项目Id
addVar | 添加文本变量到 vars 数组
getSender | 获取发送方式
xsend | 发送短信
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.MMS);
MMSXSend submail = new MMSXSend(config);
submail.addTo("176XXXXX");
submail.setProject("XXX");
submail.addVar("code", "张三");
submail.addVar("minue", "2289");
String response=submail.xsend();
System.out.println("接口返回数据:"+response);
```
---
#### MMSMutilXSend 类
##### 初始化:
- AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.MMS);
- MMSMultiSend submail = new MMSMultiSend(config);
**使用指引:**
方法 | 描述
---|---
setProject | 设置群发短信模板。
addMulti| 设置多个发送对象信息
getSender | 获取发送方式
multiSend| 发送短信
**代码示列:**
```
AppConfig config = ConfigLoader.load(ConfigLoader.ConfigType.MMS);
MMSMultiSend submail = new MMSMultiSend(config);
submail.setProject(xxx);
JSONObject json = new JSONObject();
json.put("code", "1111");
json.put("time", "1分钟");
submail.addVars(json);
submail.addMulti("1760xxxx15149");
JSONObject json2 = new JSONObject();
json2.put("code", "2222");
json2.put("time", "1分钟");
submail.addVars(json2);
submail.addMulti("1822xxxx949");
String response = submail.multixsend();
System.out.println("接口返回消息:" + response);
```
---
具体参数参数传入请参考我们的开发文档:[点击跳转](https://www.mysubmail.com/chs/documents/developer/index)