1.前置工作

申请签名:签名是短信中能代表发送者属性的字段,一般为公司名称。目前个人用户是无法申请的,只有企业账号才可申请。
申请模板:模板就是固定内容+动态验证码。例如,尊敬的 ${name},您的快递已飞奔在路上,将今天 ${time} 送达您的手里,请留意查收。
发送短信:在模板,签名都申请下来后就可以通过代码发送短信了

用户权限: ak,sk

2.参数,   ak,sk,regionid,phone(目标手机号),SignName(签名名称),TemplateCode(短信模板),TemplateParam(变量替换)

3.6.1.1、申请签名与模板

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

说明:申请签名时,个人用户只能申请一个并且签名的名称必须为“ABC商城”,否则审核不通过。

申请模板:

3.6.1.2、设置用户权限

在阿里云中,需要在RAM服务中创建用户以及权限,才能通过api进行访问接口。

创建用户:

创建完成后要保存AccessKey Secret和AccessKey ID,AccessKey Secret只显示这一次,后面将不再显示。

添加权限:

阿里云官网调用链接

文档:SendSms - 发送短信 - 短信服务 - 阿里云:

3.6.1.3、示例代码

/*pom.xml
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.5.3</version>
</dependency>
*/
public class SendSms {
    public static void main(String[] args) {
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou",
                "LTAI4G7d2Q9CHc741gighjTF", "uKOOGdIKvmoGhHlej8cJY8H3nlU6Fj");
        IAcsClient client = new DefaultAcsClient(profile);

CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        request.putQueryParameter("RegionId", "cn-hangzhou");
        request.putQueryParameter("PhoneNumbers", "158****7944"); //目标手机号
        request.putQueryParameter("SignName", "ABC商城"); //签名名称
        request.putQueryParameter("TemplateCode", "SMS_204756062"); //短信模板code
        request.putQueryParameter("TemplateParam", "{\"code\":\"123456\"}");//模板中变量替换
        try {
            CommonResponse response = client.getCommonResponse(request);

//{"Message":"OK","RequestId":"EC2D4C9A-0EAC-4213-BE45-CE6176E1DF23","BizId":"110903802851113360^0","Code":"OK"}
            System.out.println(response.getData());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

3.6.1.4、实现发送短信方法

配置文件:aliyun.properties

aliyun.sms.regionId = cn-hangzhou
aliyun.sms.accessKeyId = LTAI4G7d2Q9CHc741gighjTF
aliyun.sms.accessKeySecret = uKOOGdIKvmoGhHlej8cJY8H3nlU6Fj
aliyun.sms.domain= dysmsapi.aliyuncs.com
aliyun.sms.signName= ABC商城
aliyun.sms.templateCode= SMS_204756062

需要注意中文编码问题:

读取配置:

package com.tanhua.sso.config;
​
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
​
@Configuration
@PropertySource("classpath:aliyun.properties")
@ConfigurationProperties(prefix = "aliyun.sms")
@Data
public class AliyunSMSConfig {
​private String regionId;private String accessKeyId;private String accessKeySecret;private String domain;private String signName;private String templateCode;
​
}

代码实现:

//SmsService.java
/*** 发送短信验证码** @param mobile* @return*/public String sendSms(String mobile) {DefaultProfile profile = DefaultProfile.getProfile(this.aliyunSMSConfig.getRegionId(),this.aliyunSMSConfig.getAccessKeyId(), this.aliyunSMSConfig.getAccessKeySecret());IAcsClient client = new DefaultAcsClient(profile);
​String code = RandomUtils.nextInt(100000, 999999) + "";
​CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain(this.aliyunSMSConfig.getDomain());request.setSysVersion("2017-05-25");request.setSysAction("SendSms");request.putQueryParameter("RegionId", this.aliyunSMSConfig.getRegionId());request.putQueryParameter("PhoneNumbers", mobile); //目标手机号request.putQueryParameter("SignName", this.aliyunSMSConfig.getSignName()); //签名名称request.putQueryParameter("TemplateCode", this.aliyunSMSConfig.getTemplateCode()); //短信模板coderequest.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");//模板中变量替换try {CommonResponse response = client.getCommonResponse(request);String data = response.getData();if (StringUtils.contains(data, "\"Message\":\"OK\"")) {return code;}log.info("发送短信验证码失败~ data = " + data);} catch (Exception e) {log.error("发送短信验证码失败~ mobile = " + mobile, e);}return null;}

java-通知-阿里云短信服务相关推荐

  1. java对接阿里云短信服务详解(验证码,推广短信,通知短信)

    前言 小前提: - java:springboot框架,maven版本管理. - 阿里云:有账号,已经进行实名认证. java对接阿里云短信服务详解(验证码,推广短信,通知短信) 前言 1. 登录阿里 ...

  2. Java 集成阿里云短信服务实现通过手机号码找回密码功能

    A. 概述 首先明确一下目标:做一个通过手机验证找回(修改)账户密码的功能,例如: 流程大致如下: 1)用户输入手机号码 2)点击获取验证码(这时候前端有一些任务,如验证手机号格式,时间倒计时,按钮状 ...

  3. java实现阿里云短信服务发送验证码

    在写注册接口时,需引入短信第三方接口,故使用了阿里云短信服务,在这里简单描述一下 1.引入依赖 <!--手机发送短信验证码--><dependency><groupId& ...

  4. Java 阿里云短信服务的集成

    Java 阿里云短信服务的集成 1.短信发送API(SendSms)---JAVA  [ https://help.aliyun.com/document_detail/55284.html?spm= ...

  5. 阿里云短信服务Java实现

    文章目录 1.阿里云用户权限 2.开通阿里云短信服务 3.帮助文档 4.编写测试代码 真实项目应用 1.阿里云用户权限 阿里云平台有很多业务,用户登录阿里云之后,要想使用业务,必须开通该业务的权限 登 ...

  6. Java常用工具类-发短信(集成阿里云短信服务)

    1.注册阿里账号并开通短信服务 注册阿里账号后,并进行个人或企业实名认证,实名认证后,才能开通短信服务. 界面如下: 2.获取AccessKey 参考获取AccessKey方法 创建成功后,如下图: ...

  7. Java实现短信验证码(阿里云短信服务)

    前言: 很多时候我们做的项目都需要上图这样的验证码来帮助我们完成更好的功能,比如:什么登录注册,忘记密码需要发送手机验证码之类的啊...下面分享我今天通过阿里云短信服务实现的短信验证码,操作都很简单, ...

  8. 使用阿里云短信服务API实现短信验证码以及短信服务通知

    使用阿里云短信服务API实现短信验证码以及短信服务通知 前言 一 .短信调用简要说明 二 .官方不带签名原生态测试demo 调用结果如下 三 .以上为不带模板和签名的API调用结果 下面加入签名和模板 ...

  9. Java实现阿里云短信云服务

    1.前提 此文章主要介绍 短信服务 的入门,可根据实际业务需求自行编写代码,写的简陋之处请见谅  想实现 阿里云短信服务,必须的有 阿里云的账号,此处文章前的你们是不是 有备而来?点击下方注册 OR ...

  10. java 阿里云短信服务

    提示:阿里云设置方面就省略了. 一.依赖 代码如下(示例): /*阿里云 短信服务 Java SDK*/compile group: 'com.aliyun', name: 'aliyun-java- ...

最新文章

  1. qt 单元格加上边框_Excel如何自动添加边框?学会这个方法效率加倍!
  2. javascript 的观察者模式的原理和集线器
  3. python pyppeteer自定义chromium目录
  4. !--[if IE]….![endif]-- (!--[if !IE]||![endif]--)的用法
  5. Hadoop-MapReduce 入门
  6. [转]asp.net中常用的一些小技巧
  7. COVID-19和世界幸福报告数据告诉我们什么?
  8. Keras 学习笔记
  9. ZT:Linux上安装JDK,最准确
  10. 蓝鹰立德的SAP解决方案开启飞马模式(FMEA)
  11. python实现钉钉群自动警报
  12. 图像处理之边缘检测[微分算子、Canny算子和LOG算子]
  13. Android使用有道翻译API实现在线翻译功能
  14. IT十大最尴尬瞬间 盖茨遭遇Win98死机列榜首
  15. unity3D的FingerGestures插件
  16. Android破解游戏内购心得
  17. 常见颜色RGB与数值对应表
  18. 中英文颜色RGB数值对照表(python cv2)
  19. 8c SQL手册 三
  20. 对接转账到支付宝账户API接口流程步骤

热门文章

  1. C++程序报错0xc000007b解决方法
  2. jquery 自动表单赋值
  3. 点到超平面距离的证明
  4. Linux多功能下载机(Arias2)
  5. android_usb_msd,MSD6A828安卓智能电视主板
  6. 小波包分解matlab程序
  7. HDFS fsimage和edits中的文件信息查看
  8. Tomcat源码解析:启动
  9. 苹果手机与电脑互传文件(win10自带方法)
  10. 大数据缺省值插补方法(回归填补[stochastic regression imputation],聚类填补,。。)