2019独角兽企业重金招聘Python工程师标准>>>

简单的介绍一下阿里云的短信继承方法,和封装的一些工具类:具体的可以参考官方文档

1 先需要将打包阿里云的core和 sms包导入到项目中

<!-- 阿里云短信 --><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>3.5.0</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version></dependency>

2 创建工具类

package com.wonlymall.mall.core.sms;import java.util.Date;
import java.util.List;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.wonlymall.mall.core.constant.CommonConstant;
import com.wonlymall.mall.core.util.CommonUtil;
import com.wonlymall.mall.modular.sys.model.SysSmsSendLog;
import com.wonlymall.mall.modular.sys.model.SysSmsTemplate;
import com.wonlymall.mall.modular.sys.service.ISysSmsSendLogService;
import com.wonlymall.mall.modular.sys.service.ISysSmsTemplateService;@Component
public class AliSmsSendTask {@Value("${aliyun.sms.accessKeyId}")public String accessKeyId;@Value("${aliyun.sms.accessKeySecret}")public String accessKeySecret;@Value("${aliyun.sms.product}")public String product;@Value("${aliyun.sms.domain}")public String domain;@Value("${aliyun.sms.region}")public String region;@Resourceprivate ISysSmsTemplateService iSysSmsTemplateService;@Resourceprivate ISysSmsSendLogService iSysSmsSendLogService;private static final String SIGN=""; #购买就有@Asyncpublic void sendSms(String templateCode,String mobile,String...content){SysSmsSendLog sysSmsSendLog=new SysSmsSendLog();try {// 可自助调整超时时间System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.client.defaultReadTimeout", "10000");// 初始化acsClient,暂不支持region化IClientProfile profile = DefaultProfile.getProfile(region, accessKeyId, accessKeySecret);DefaultProfile.addEndpoint(region, region, product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);// 组装请求对象-具体描述见控制台-文档部分内容SendSmsRequest request = new SendSmsRequest();// 必填:待发送手机号request.setPhoneNumbers(mobile);// 必填:短信签名-可在短信控制台中找到request.setSignName(SIGN);// 必填:短信模板-可在短信控制台中找到request.setTemplateCode(templateCode);SysSmsTemplate sysSmsTemplate=this.iSysSmsTemplateService.selectOne(new EntityWrapper<SysSmsTemplate>().eq("is_deleted", 0).eq("is_enable", 1).eq("template_code", templateCode));// 可选:模板中的变量替换JSON串,如模板内容为"您正在申请手机注册,验证码为:${number},5分钟内有效!"时,此处的值为List<String>templateParamList=CommonUtil.parseStringFromSeat(sysSmsTemplate.getDetail());JSONObject jsonObject=new JSONObject();for(int i=0;i<templateParamList.size();i++) {jsonObject.put(templateParamList.get(i), content[i]);}request.setTemplateParam(jsonObject.toJSONString());//request.setTemplateParam("{\"number\":\"123456\"}");// 选填-上行短信扩展码(无特殊需求用户请忽略此字段)// request.setSmsUpExtendCode("90997");// 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者request.setOutId("yourOutId");// hint 此处可能会抛出异常,注意catchSendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);sysSmsSendLog.setCreated(new Date());sysSmsSendLog.setModified(new Date());sysSmsSendLog.setDetail(sysSmsTemplate.getDetail());sysSmsSendLog.setMobile(mobile);sysSmsSendLog.setIsDeleted(CommonConstant.NO);sysSmsSendLog.setIsEnable(CommonConstant.YES);if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {//请求成功sysSmsSendLog.setIsSuccess(CommonConstant.YES);}else {sysSmsSendLog.setIsSuccess(CommonConstant.NO);}//sysSmsSendLog.setBackMessage(sendSmsResponse.getMessage());} catch(Exception e) {e.printStackTrace();sysSmsSendLog.setIsSuccess(CommonConstant.NO);//sysSmsSendLog.setBackMessage("");}this.iSysSmsSendLogService.insert(sysSmsSendLog);}}
/*** 从占位符解析字符串* @return* 亲爱的${name},您的验证码为${code}*/public static List<String> parseStringFromSeat(String str) {if(StringUtils.isBlank(str)) {return new ArrayList<>();}String[]strArr=str.split("\\{");List<String>list=new ArrayList<>();for(String s:strArr) {if(StringUtils.contains(s, "}")) {int index=s.indexOf("}");list.add(s.substring(0, index));}}return list;}

3 后台数据库中模板库配置

DROP TABLE IF EXISTS `p_sys_sms_template`;
CREATE TABLE `p_sys_sms_template` (`id` int(11) NOT NULL AUTO_INCREMENT,`type` int(1) NOT NULL DEFAULT '0' COMMENT '模板类型:0短信消息;1APP推送消息;2微信服务消息',`name` varchar(20) NOT NULL COMMENT '模板名称',`template_code` varchar(200) DEFAULT NULL COMMENT '模板code',`detail` varchar(200) NOT NULL COMMENT '模板内容',`is_enable` int(1) DEFAULT '0' COMMENT '是否启用,0不启用,1启用',`creator` int(11) NOT NULL DEFAULT '0' COMMENT '创建人',`modifier` int(11) NOT NULL DEFAULT '0' COMMENT '修改人',`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间',`is_deleted` int(1) unsigned NOT NULL DEFAULT '0' COMMENT '0正常,1删除',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COMMENT='短信模板配置表';

例如

INSERT INTO `p_sys_sms_template` VALUES ('1', '0', '注册登录短信验证码', '1111', '验证码为${code},该验证码5分钟内有效,请勿泄露于他人,如非本人操作请忽略。', '1', '0', '0', '2018-12-13 16:27:46', '2018-12-13 16:27:46', '0');
INSERT INTO `p_sys_sms_template` VALUES ('19', '0', '指派短信模板', '222', '您的${projectname}项目报务信息已成功委任,已指派大客户经理${name},电话${phone}协助您跟进,请及时跟踪工程单。', '1', '0', '0', '2018-12-24 15:17:30', '2018-12-24 15:17:30', '0');

转载于:https://my.oschina.net/u/3677987/blog/2992579

SpringBoot继承阿里云短信相关推荐

  1. SpringBoot整合阿里云短信服务详细过程(保证初学者也能实现)

    前言 网上关于实操性的文章普遍大部分都记录不全,要么只记录重点部分,对于刚学习的小伙伴来说看起来是比较困难的 所以,基于这一点. 该文章会详细介绍使用SpringBoot整合阿里云短信服务的每一步过程 ...

  2. SpringBoot集成阿里云短信服务

    SpringBoot集成阿里云短信服务 1.准备工作 2.项目集成 2.1 添加依赖 2.2 配置文件 2.3 业务逻辑实现 在实际项目中经常有发送短信的功能,今天进说一下对接阿里云短信服务实现短信发 ...

  3. springboot集成阿里云短信服务,实现发送短信功能

    springboot集成阿里云短信服务,实现发送短信功能 准备工作: 1.登陆阿里云->进入控制台->开通短信服务(进入后根据提示开通) 2.充值(借人家平台发短信你以为不要钱的?我充了3 ...

  4. SpringBoot实现阿里云短信服务

    阿里云短信服务 了解阿里云用户权限 准备工作 开启子用户 新建一个用户组 创建用户并添加进用户组 开启阿里云短信服务 添加模板 添加签名 编写代码测试 新建项目 导入依赖 编写测试代码 开启redis ...

  5. springboot+springsecurity+阿里云短信服务验证实现注册登录

    使用springboot+security+Aliyun短信服务实现注册登录 为了实现个人博客部分的登录注册,我采用了阿里云短信服务发送验证码,后端比对验证码的方式完成注册,现在功能还不完全,以后这个 ...

  6. Springboot整合阿里云短信服务

    目录 一.阿里云短信配置 1.开通短信服务​ 2. 申请模板 3.申请签名 二.springboot中集成阿里云短信服务 0.pom中引入依赖 1.配置application.properties 2 ...

  7. SpringBoot集成阿里云短信服务实现登录注册(超详细)

    本篇博客采用得技术为:springboot + redis + aliyun短信验证 redis我用来做短信校验,首先我们先刨除redis部分做一个发送功能 登录你得阿里云账号 1 -> 控制台 ...

  8. springboot整合阿里云短信验证(无需签名和模板,通过阿里云api测试实现短信验证)

    一.开通阿里云短信服务 开通步骤如下图所示 开通完成后,进入阿里云短信验证首页,点击国内消息 一般来说,在短信验证时需要签名管理和模板管理,但是签名管理需要备案或者上线服务,所以对于没有备案和上线应用 ...

  9. Java SpringBoot集成阿里云短信与邮件服务

    1.pom.xml导入jar包 <!--阿里云短信 --><dependency><groupId>com.aliyun</groupId><ar ...

最新文章

  1. 用php循环星期一到星期日,php函数获取日期范围内的所有星期一
  2. contentSize、contentInset和contentOffset区别
  3. java字符串转日期_JAVA字符串转日期或日期转字符串
  4. 密码学基础知识(九)密钥管理
  5. 【ASP.NET Core 沉思录】CreateWebHostBuilder 是一个 Convension
  6. ajax option请求后无post请求_ThingJS:一种浏览器、服务器和技术的新组合方法——Ajax...
  7. *【HDU - 5707】Combine String(dp)
  8. 负债越多的人越容易翻身
  9. 程序员如何才配拥有姓名?
  10. tomcat版本_Tomcat9+JDK13环境搭建(新版本)
  11. ES6入门---变量的解构赋值
  12. 自制固件iOS4.1刷机、解锁教程
  13. echart坐标轴添加下划线问题
  14. 苹果屏蔽更新描述文件_屏蔽iPhone更新的iOS描述文件安装办法
  15. 2021ICPC网络赛第一场【A Busiest Computing Nodes】【D Edge of Taixuan】
  16. adb inputswipe shell_[Android]通过adb shell input上报命令模拟屏幕点击事件【转】
  17. 解决 QGC地面站 ( QGroundControl )停止工作-由于win7 ghost精简缺少语音包
  18. WPS Office 2019文字组件插入和改写状态的切换
  19. 单片机 c语言 可控硅,单片机控制可控硅电路
  20. Spark的搭建及实现单词统计

热门文章

  1. 学完软件测试还能找到工作吗?
  2. gyp: No Xcode or CLT version detected! 错误提示
  3. Altium Designer 原理图如何统计Pins数目
  4. PrimeTime基础命令:get_pins
  5. Quartus II -Warning (15714):Some pins have incomplete I/O assignments. Refer to the I/O Assignment
  6. 女子手机流量一夜疯跑了50GB
  7. iphon44s图片的缩放
  8. Exer4.6.c(undone)
  9. Bootstrap 标签 label
  10. @Scheduled(cron = “* * * * * *“) cron表达式详解