短信服务以及邮件推送服务使用的都是阿里云的产品,短信服务是收费的,所以需要选择短信服务的套餐并预充值才能使用。邮件推送服务是有200条的免费额度。

一:短信服务

1、申请短信签名、短信模板

到阿里云的短信服务 控制台,国内消息:签名管理中申请短信签名,模板管理中申请短信模板。

2、申请accessKeyId和accessKeySecret:

①:到RAM访问控制,人员管理,用户,新建用户

2、在新建用户里,填入登录名称以及显示名称,并勾选编程访问,至此短信服务的准备工作就完了。

附:还需要加入短信API使用的权限

3、在spring boot的pom.xml中加入阿里云短信服务的依赖,并加入JSON的依赖

<!-- 阿里云服务依赖  -->
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.1.0</version>
</dependency><!-- 阿里云短信服务依赖  -->
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version>
</dependency>
<!-- 阿里云JSON  -->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.31</version>
</dependency>

4、将申请好的短信服务的短信签名、短信模板、accessKeyId、accessKeySecret等放到配置文件中,最好使用.properties格式的,yml格式的我使用配置类没有读取成功:

#短信服务 accessKeyId
msn.accessKeyId=accessKeyId#短信服务 accessKeySecret
msn.accessKeySecret=accessKeySecret#短信服务 产品名称:云通信短信API产品,开发者无需替换
msn.product=Dysmsapi#短信服务 发送短信的域名
msn.domain=dysmsapi.aliyuncs.com#短信服务 区域Id
msn.regionId=cn-hangzhou#短信服务 签名
msn.signName=阿里云短信签名(最好将短信签名写进代码里,否则会出现程序读取短信签名时乱码,导致读取失败,从而无法发送短信)#短信服务 模板
msn.templateCode=阿里云短信模板#短信服务 模板参数
msn.templateParam=code#短信服务 发送日期 支持30天内记录查询,格式yyyyMMdd
msn.dateFormat=yyyyMMdd#短信服务 服务节点
msn.endpointName=cn-hangzhou

5、使用配置类读取配置文件中的短信配置:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;@Component
@PropertySource("classpath:msn.properties")
@ConfigurationProperties(prefix = "msn")
@Data
public class MsnConfig {/*** accessKeyId*/private String accessKeyId;/***   accessKeySecret*/private String accessKeySecret;/***产品名称:云通信短信API产品,开发者无需替换*/private String product;/***发送短信的域名*/private String domain;/***区域Id*/private String regionId;/***签名*/private String signName;/***模板*/private String templateCode;/***模板参数*/private String templateParam;/***发送日期  支持30天内记录查询,格式yyyyMMdd*/private String dateFormat;/***服务节点*/private String endpointName;
}

6、短信服务核心代码:

@GetMapping("/msn")
public String sendMsn() {//短信发送结果String result = "";String regionId = msnConfig.getRegionId();String accessKeyId = msnConfig.getAccessKeyId();String accessSecret = msnConfig.getAccessKeySecret();String signName = msnConfig.getSignName();System.out.println("显示signName:"+signName);String templateCode = msnConfig.getTemplateCode();String templateParam = msnConfig.getTemplateParam();Map<String,String> map = new HashMap<>();//随机生成六位验证码String verifyCode = String.valueOf((Math.random()*9+1)*100000).substring(0,6);map.put(templateParam,verifyCode);String code = JSON.toJSONString(map);DefaultProfile profile = DefaultProfile.getProfile(regionId,accessKeyId,accessSecret);IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setMethod(MethodType.POST);request.setDomain("dysmsapi.aliyuncs.com");request.setVersion("2017-05-25");request.setAction("SendSms");request.putQueryParameter("RegionId", regionId);request.putQueryParameter("PhoneNumbers", "手机号码");request.putQueryParameter("SignName", "短信签名");request.putQueryParameter("TemplateCode", templateCode);request.putQueryParameter("TemplateParam",code);try {CommonResponse response = client.getCommonResponse(request);result = response.getData();System.out.println();} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}return result;
}

读取配置类中的短信签名时会出现乱码:

7、测试:

此结果表示短信发送成功,短信服务开发完成。

二、邮件推送服务:

开发邮件服务需要有持有域名才行,由于本文讲的是邮件推送服务,对于如何购买域名等问题请自行解决。

1、在邮件服务-邮件设置-发信域名:新建发信域名(此为示例)

2、发信配置:

3、到域名提供商处添加相应的配置。

4、发信地址设置:

5、设置邮件标签

6、到RAM访问控制台新建邮件发送的用户,步骤与开发短信服务时的操作一致,故不再赘述。,但也需要加邮件推送API使用的权限,至此邮件推送的准备工作已完毕。

7、在pom.xml中加入阿里云邮件推送使用的依赖

<!-- 阿里云服务依赖  -->
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.1.0</version>
</dependency><!-- 阿里云邮箱服务依赖  -->
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dm</artifactId><version>3.1.0</version>
</dependency><!-- 阿里云JSON  -->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.31</version>
</dependency>

8、将邮件推送服务使用的配置写入到配置文件中:

#邮件服务 accessKeyId
mail.accessKeyId=#邮件服务 accessKeySecret
mail.accessKeySecret=#邮件服务 发信地址
mail.accountName=#邮件服务 区域Id
mail.regionId=cn-hangzhou#邮件服务 发信人昵称
#mail.sendPersonName=(程序无法正常读取中文,若是中文应写到程序中)#邮件服务  取值范围 0~1: 0 为随机账号;1 为发信地址
mail.addressType=1#邮件服务 控制台创建的标签
mail.tagName=#邮件服务 回信地址
mail.replyToAddress=true#邮件服务  目标地址
mail.toAddress=邮件接收人的邮箱

9、配置类读取邮件推送配置

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;@Component
@PropertySource("classpath:mail.properties")
@ConfigurationProperties(prefix = "mail")
@Data
public class MailConfig {/*** accessKeyId*/private String accessKeyId;/***   accessKeySecret*/private String accessKeySecret;/*** 发信地址*/private String accountName;/***区域Id*/private String regionId;/***发信人昵称*/private String sendPersonName;/***发信地址代码 1*/private Integer addressType;/***控制台创建的标签*/private String tagName;/***回信地址*/private boolean replyToAddress;/***目标地址*/private String toAddress;}

10、邮件推送核心代码(此为示例):

@GetMapping("/mail")
public String sample() {//邮件发送结果String result = "";// 如果是除杭州region外的其它region(如新加坡、澳洲Region),需要将下面的"cn-hangzhou"替换为"ap-southeast-1"、或"ap-southeast-2"。IClientProfile profile = DefaultProfile.getProfile(mailConfig.getRegionId(), mailConfig.getAccessKeyId(), mailConfig.getAccessKeySecret());// 如果是除杭州region外的其它region(如新加坡region), 需要做如下处理//try {//DefaultProfile.addEndpoint("dm.ap-southeast-1.aliyuncs.com", "ap-southeast-1", "Dm",  "dm.ap-southeast-1.aliyuncs.com");//} catch (ClientException e) {//e.printStackTrace();//}IAcsClient client = new DefaultAcsClient(profile);SingleSendMailRequest request = new SingleSendMailRequest();try {//request.setVersion("2017-06-22");// 如果是除杭州region外的其它region(如新加坡region),必须指定为2017-06-22request.setAccountName(mailConfig.getAccountName());request.setFromAlias("发信人昵称");request.setAddressType(mailConfig.getAddressType());request.setTagName(mailConfig.getTagName());request.setReplyToAddress(true);request.setToAddress(mailConfig.getToAddress());//可以给多个收件人发送邮件,收件人之间用逗号分开,批量发信建议使用BatchSendMailRequest方式//request.setToAddress("邮箱1,邮箱2");request.setSubject("尊敬的用户您好:");//随机生成六位验证码String verifyCode = String.valueOf((Math.random()*9+1)*100000).substring(0,6);request.setHtmlBody("此邮件为开发邮件功能的测试邮件,验证码为:"+verifyCode);//开启需要备案,0关闭,1开启//request.setClickTrace("0");//如果调用成功,正常返回httpResponse;如果调用失败则抛出异常,需要在异常中捕获错误异常码;错误异常码请参考对应的API文档;SingleSendMailResponse httpResponse = client.getAcsResponse(request);result = httpResponse.getEnvId() + " "+httpResponse.getRequestId();} catch (ServerException e) {//捕获错误异常码System.out.println("ErrCode : " + e.getErrCode());e.printStackTrace();}catch (ClientException e) {//捕获错误异常码System.out.println("ErrCode : " + e.getErrCode());e.printStackTrace();}return result;
}

11、发送邮件:返回结果若出现此结果,则表示发送成功,可查看邮件。

三、总结:

使用阿里云的短信服务、邮件推送服务开发短信通知及邮件通知功能,过程并不复杂,可把发送的验证码存储到数据库或缓存中,用来进行注册或登陆验证。

​​​​​​​

springboot开发基于阿里云的短信服务、邮件推送服务相关推荐

  1. SpringBoot+vue 使用阿里云的短信功能发送手机验证码

    前言: 小编后端用的是Springboot 前端用的是vue ,小编主要是写后台,前端页面比较简陋,后期还要调优,写的不对处还望多多包涵. 环境: 需要先准备好阿里云的账号和一些必要的参数.详情见我的 ...

  2. Flask - 基于阿里云的短信发送

    目录 一.前期准备 二.官方 SDK_demo 的学习使用 2-1 sms_send 2-2 sms_query 指定手机号的短信发送的 三.基于SDK发送短信 + Celery 实现异步任务 一.前 ...

  3. 基于阿里云的短信接口的工具类及三个jar包下载地址

    https://blog.csdn.net/Mr_zzr/article/details/100168118 上面这个写的很好! 三个jar包下载地址在我的github: https://github ...

  4. 一小时学会使用SpringBoot整合阿里云SMS短信服务

    1. 登录阿里云进入控制台 进入阿里云控制台,https://home.console.aliyun.com/在个人头像位置点击进入AccessKey管理: 2. 创建用户和用户组 创建用户组 添加完 ...

  5. 使用阿里云的短信服务发送短信

    原文地址使用阿里云的短信服务发送短信 在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发 ...

  6. 2021最新 使用阿里云的短信服务发送短信

    在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发送短息,因此都是基于HTTP协议做的一 ...

  7. Java 对接 阿里云 的短信服务完成短信的发送与查询

    一.开通阿里云短信服务,为开发时需要用到的信息做准备 1.注册或者使用自己的支付宝账号登录阿里云官网 2.搜索并找到短信服务,进行开通(开通是不要钱的,发送短信的时候才需要钱) 3.注册自己的短信签名 ...

  8. java 阿里云 发送短信功能实现

    1. 注册短信平台(以阿里云为例) 常用短信服务平台:阿里云.华为云.腾讯云.京东.梦网.乐信等 2. 注册成功后,开通短信服务 3. 设置短信签名.短信模板.AccessKey AccessKey ...

  9. Java阿里云发送短信

    文章目录 前言 准备工作 短信服务API介绍 阿里云api发送短信 传送门 前言 短信服务,是阿里云为客户提供的一种通信服务的能力. 准备工作 需要申请一个阿里云账号 开通短信服务 添加签名和模板(需 ...

最新文章

  1. 独家 | 手把手教你用Python创建简单的神经网络(附代码)
  2. R语言警告:Cannot compute exact p-value with ties的处理方法
  3. sklearn数据集操作API
  4. python算法与数据结构-双向链表
  5. ElementUI el-table 在flex下的宽度自适应问题
  6. 在腾讯云轻量云服务器上搭建mysql数据库
  7. 胡伟 | 面向多实体人机协作消解的对比表生成自动化方法
  8. python单元测试mock_Python单元测试的Mock是怎么回事
  9. Android清空Fragment回退栈
  10. RFC 2544 标准—以太网测试仪
  11. 绝美中国建筑!为中国摄影师鼓掌!
  12. 科技爱好者如何避免成为“民科”,以及为何科技爱好团体必须杜绝“民科”现象...
  13. ADXL345调试心得
  14. 【修真院“善良”系列之二】产品经理应该懂哪些术语?
  15. 【考研经验】19年华东师范大学计算机专硕考研经验(初试+复试)分享!专业课140分!...
  16. 【IO/NIO】Java NIO浅析
  17. android apk包解压缩,Android 解压APK文件
  18. 【完美解决】华擎A320M装2根内存条就蓝屏
  19. 雷达系统 学习笔记(五)——脉冲多普勒雷达2
  20. 怎么把PDF文件转换成CAD格式

热门文章

  1. 【2019春招准备:总目录】
  2. 【第二部分 图像处理】第4章 Opencv图像处理高阶【2毛玻璃滤镜】
  3. Halcon几何定位
  4. 一篇文章读懂无人机全产业链(含主控芯片厂商信息)
  5. LabVIEW-使用与非门实现三人表决器
  6. 一份好的简历应该这样做!
  7. NW.js 和 Electron 优缺点分析对比
  8. ElasticSearch--性能优化相关的配置
  9. 选计算机专业后遇到的各种困难作文,我克服困难的作文(通用26篇)
  10. “少踩坑”,拿到offer后,我们可以做什么?