话不多说,直接上干货
1.在配置文件中配置参数
#sms
sms.url=http://202.91.244.252/qd/SMSSendYD
sms.usr=5138
sms.pwd=5138@santijt
#the max time a sms can resend
sms.max_send_time=3
#the max num of smses per phone number send per day‡
sms.max_send_num=20
#the max num of smses send at one time
sms.per_send_num=50
2.java代码中注入参数
@Value("${sms.url}")
private String smsUrl;
@Value("${sms.usr}")
private String smsUsr;
@Value("${sms.pwd}")
private String smsPwd;
@Value("${sms.max_send_time}")
private String smsMaxSendTime;
@Value("${sms.max_send_num}")
private String smsMaxSendNum;
@Value("${sms.per_send_num}")
private String smsPerSendNum;
3.发送短信
// 每5秒发送一次短信
@Scheduled(cron = "0/5 * 6-23 * * ?")
public void sendMessage() {
smsService.send();
}
业务层实现发送短信
paramMap.put("mobile", sms.getPhone());
paramMap.put("sms", sms.getContent());
// 发送短信
String result = HttpUtil.doPost(smsUrl, ApplicationConstant.FORM_CONTENT_TYPE, paramMap, "gbk");
String status = cutResultFromResponse(result);
.
.
.
/**
* Description: 从短信发送反馈中,截取发送结果
*/
private String cutResultFromResponse(String resposne) {
int index = resposne.indexOf(",");
if (index == -1) {
return SmsSendResultEnum.OTHER_ERROR.getKey();
}
String result = SmsSendResultEnum.getKeyByCode(resposne.substring(0, index));
return null == result ? SmsSendResultEnum.OTHER_ERROR.getKey() : result;
}
package com.hengtiansoft.st.enums;
/**
*
* Description: 短信发送结果枚举
*/
public enum SmsSendResultEnum {
SUCCESS ("0", "0", "发送成功"),
SYS_ERROR ("1", "-100", "系统错误"),
ACCT_ERROR ("2", "-101", "用户名或密码错误"),
PHONE_LENGTH_ERROR ("3", "-102", "手机号长度错误"),
SMS_CONTENT_EMPTY ("4", "-103", "短信为空"),
BALANCE_SHORTAGE ("5", "-104", "账户余额不足"),
PHONE_FORMAT_ERROR ("6", "-105", "手机号格式错误"),
IP_UNBOUND ("7", "-106", "IP地址未绑定"),
SMS_REPEAT ("8", "-107", "同一号码短信重复发送"),
SMS_PACK_SHORTAGE ("9", "-108", "短信包号码数量不足"),
SMS_CONTENT_EXCEED ("10", "-109", "短信内容过长"),
PHONE_SEND_TIME_EXCEED ("11", "-110", "同一号码发送次数达限制"),
PHONE_SEND_TOO_QUICK ("12", "-111", "同一号码频繁发送短信"),
OTHER_ERROR ("13", "-112", "其他错误");
private String key;
private String code;
private String value;
private SmsSendResultEnum(String key, String code, String value) {
this.key = key;
this.code = code;
this.value = value;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public static String getKeyByCode(String code) {
for (SmsSendResultEnum type : values()) {
if (type.getCode().equals(code)) {
return type.getKey();
}
}
return null;
}
}