java实现发短信功能---腾讯云短信
2019-08-16 12:22:03来源:博客园 阅读 ()
java实现发短信功能---腾讯云短信
目录
- java实现发短信功能
- 前言
- 开发环境
- 腾讯云 ---短信
- 代码
- 效果
- 结束语
java实现发短信功能
前言
如今发短信功能已经成为互联网公司的标配,本篇文章将一步步实现java发送短信
考察了许多提供短信服务的三方,几乎所有都需要企业认证才可以使用,这对于个人学习非常不方便。多方比较之后,选择了腾讯云(此处并非做广告),原因有两点:
- 支持微信公众号认证(门槛低)
- 每月赠送100条免费短信(适合个人学习)(这一点请矿家子弟自行忽略)
开发环境
请参照:?基于SpringBoot构建分模块项目
腾讯云 ---短信
找到短信服务
开通之后,点击添加应用
设置短信签名(以公众号为例),签名类型选择公众号或小程序,其余按照要求填写即可
签名完成之后,创建短信模板
等待以上信息审核完成之后,便可以开始使用了,腾讯短信服务需要用到SDK AppID 和App Key ,在这里:
代码
pom.xml引入依赖
<properties> <java.version>1.8</java.version> <!-- 你的其他依赖。。。 --> <tencent.qcloudsms.version>1.0.6</tencent.qcloudsms.version> </properties> <dependencies> <!-- 你的其他依赖。。。 --> <!-- 腾讯短信 --> <dependency> <groupId>com.github.qcloudsms</groupId> <artifactId>qcloudsms</artifactId> <version>${tencent.qcloudsms.version}</version> </dependency> </dependencies>
发送短信工具类
package com.wayne.common.utils; import com.github.qcloudsms.*; import com.github.qcloudsms.httpclient.HTTPException; import com.wayne.common.entity.CmsMessageConfig; import com.wayne.common.exception.CustomException; import com.wayne.common.form.MessageForm; import org.json.JSONException; import java.io.IOException; /** * 发送短信工具类 * @author Wayne * @date 2019/6/26 */ public class MessageUtils { /** * 按模板发送短信 支持单发和群发 * @param isSingle 是否单发 true: 单发,false: 群发 * @param form 需要发送的短信内容及收信人手机号 * @param config 短信配置 * @throws CustomException 发送失败时捕获的异常信息 */ public static void sendMessage(Boolean isSingle, MessageForm form, CmsMessageConfig config) throws CustomException { validateMessage(form, config); String regex = ";"; String[] params = {form.getCaptcha()}; String[] phoneNumbers = form.getMobiles().split(regex); SmsResultBase result; try { // 是否单发 if (isSingle) { SmsSingleSender ssender = new SmsSingleSender(config.getAppId(), config.getAppKey()); result = ssender.sendWithParam("86", phoneNumbers[0], config.getTemplateId(), params, config.getSmsSign(), "", ""); } else { SmsMultiSender msender = new SmsMultiSender(config.getAppId(), config.getAppKey()); result = msender.sendWithParam("86", phoneNumbers, config.getTemplateId(), params, config.getSmsSign(), "", ""); } System.out.println(result); } catch (HTTPException e) { e.printStackTrace(); throw new CustomException("HTTP响应码错误"); } catch (JSONException e) { e.printStackTrace(); throw new CustomException("json解析错误"); } catch (IOException e) { e.printStackTrace(); throw new CustomException("网络IO错误"); } } /** * 校验参数 */ private static void validateMessage(MessageForm messageForm, CmsMessageConfig messageConfig) throws CustomException { ValidatorUtils.validateEntity(messageForm); if (null == messageConfig) { throw new CustomException("系统参数异常"); } } }
CmsMessageConfig配置类
package com.wayne.common.entity; import lombok.Data; import javax.persistence.*; @Data @Table(name = "cms_message_config") public class CmsMessageConfig { /** * 主键 */ @Id @Column(name = "ID") private Integer id; /** * AppID */ @Column(name = "APP_ID") private Integer appId; /** * AppKey */ @Column(name = "APP_KEY") private String appKey; /** * 短信模板ID */ @Column(name = "TEMPLATE_ID") private Integer templateId; /** * 签名内容 */ @Column(name = "SMS_SIGN") private String smsSign; /** * 是否删除,0:否,1:是 */ @Column(name = "IS_DELETE") private String isDelete; /** * 状态,0:使用,1:未使用 (同一时间应最多只有一条数据处于使用状态) */ @Column(name = "IS_USE") private String isUse; /** * 创建者ID */ @Column(name = "CREATE_ADMIN_ID") private Integer createAdminId; @Column(name = "EXTEND1") private String extend1; @Column(name = "EXTEND2") private String extend2; @Column(name = "EXTEND3") private String extend3; @Column(name = "EXTEND4") private String extend4; @Column(name = "EXTEND5") private String extend5; @Column(name = "EXTEND6") private String extend6; }
Service
@Override public ResponseBean sendMessage(MessageForm messageForm) { ValidatorUtils.validateEntity(messageForm); // 获取正在使用的短信配置: 此处为 从数据库中查询 CmsMessageConfig messageConfig = getCurrUseMessageConfig(); try { // 发送短信 MessageUtils.sendMessage(Boolean.FALSE, messageForm, messageConfig); } catch (CustomException e) { e.printStackTrace(); return ResponseBean.createInstance(Boolean.FALSE, 401, e.getMessage()); } return ResponseBean.createInstance(); }
Controller
@PostMapping("/message/sendMessage") public ResponseBean sendMessage(MessageForm messageForm) { return messageService.sendMessage(messageForm); }
效果
一号短信模板
二号短信模板
设置短信配置信息
结束语
最后,本人已开通公众号,欢迎大家前来灌水
原文链接:https://www.cnblogs.com/L-Wirepuller/p/11337086.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- DES/3DES/AES 三种对称加密算法实现 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash