开通服务,添加资质、签名、模版。
详情参考:
阿里云短信服务使用(Java)_阿里云短信服务java-CSDN博客
java对接阿里云短信服务详解(验证码,推广短信,通知短信)-CSDN博客
springboot 集成aliyun短信服务
一、引入依赖
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>3.0.0</version>
</dependency>
二、相关示例代码
来自官方文档:
package com.aliyun.sample;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import static com.aliyun.teautil.Common.toJSONString;
public class Sample {
public static Client createClient() throws Exception {
Config config = new Config()
// 配置 AccessKey ID
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 配置 AccessKey Secret
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// 配置 Endpoint
config.endpoint = "dysmsapi.aliyuncs.com";
return new Client(config);
}
public static void main(String[] args) throws Exception {
// 初始化请求客户端
Client client = Sample.createClient();
// 构造请求对象,请填入请求参数值
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers("<YOUR_VALUE>")
.setSignName("<YOUR_VALUE>")
.setTemplateCode("<YOUR_VALUE>")
.setTemplateParam("<YOUR_VALUE>");
// 获取响应对象
SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
// 响应包含服务端响应的 body 和 headers
System.out.println(toJSONString(sendSmsResponse));
}
}
注意点:
Config config = new Config()
// 配置 AccessKey ID
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 配置 AccessKey Secret
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
System.getenv需要把keyId 和 keySecret 配置到电脑的环境变量中。如果不配置,会报空指针异常 。
java.lang.NullPointerException
at com.aliyun.teaopenapi.Client.doRequest(Client.java:885) at com.aliyun.teaopenapi.Client.callApi(Client.java:1170) at com.aliyun.dysmsapi20170525.Client.sendSmsWithOptions(Client.java:2714) at com.aliyun.dysmsapi2...
文章后面会写如何配置。最后也写了简单写法
部分参数参考:
endpoint为固定值: https://api.aliyun.com/product/Dysmsapi
三、附录设置环境变量
设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
为例:
-
Linux和macOS系统配置方法
-
创建
.bash_profile
文件说明
如果是第一次设置环境变量,可以使用
touch ~/.bash_profile
创建一个配置文件,如果已经存在配置文件,则使用vim ~/.bash_profile
命令直接编辑文件。touch ~/.bash_profile vim ~/.bash_profile
-
配置
.bash_profile
文件# 将以下命令中的<ACCESS_KEY_ID>和<ACCESS_KEY_SECRET>替换为您自己的AccessKey ID和AccessKey Secret。 # 变量名称可以根据实际情况进行替换,例如OSS_ACCESS_KEY_ID、OSS_ACCESS_KEY_SECRET。 export ALIBABA_CLOUD_ACCESS_KEY_ID=<ACCESS_KEY_ID> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ACCESS_KEY_SECRET>
编辑完成后保存退出。
-
使用
.bash_profile
文件# 使配置文件生效 source ~/.bash_profile # 显示配置是否生效 echo $ALIBABA_CLOUD_ACCESS_KEY_ID
若返回正确的AccessKey ID,则说明配置成功。
-
-
Windows系统配置方法
在桌面右键单击此电脑,选择属性>高级系统设置>环境变量>系统变量/用户变量>新建,完成以下配置:(变量值设置为自己账号的keyId 和keySecret)
变量名:ALIBABA_CLOUD_ACCESS_KEY_ID
变量值:LTAI4GDty8ab9W4Y1D**** 变量名:ALIBABA_CLOUD_ACCESS_KEY_SECRET
变量值:IrVTNZNy5yQelTETg0cZML3TQn**** 参考:快速使用新版SDK初始化客户端进行OpenAPI请求(Java SDK)_阿里云SDK(Alibaba Cloud SDK)-阿里云帮助中心 (aliyun.com)
四、简单写法
只想要做简单测试,不需要配置环境变量:
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;
public class smsTest {
public static void main(String[] args) {
Config config = new Config()
//这里修改为我们上面生成自己的AccessKey ID
.setAccessKeyId("xxxxxxxx")
//这里修改为我们上面生成自己的AccessKey Secret
.setAccessKeySecret("xxxxxxxx");
// 访问的域名
config.endpoint = "dysmsapi.aliyuncs.com";
try{
Client client = new Client(config);
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setSignName(signName)//短信签名
.setTemplateCode(Tcode)//短信模板
.setPhoneNumbers(XXXXX)//这里填写接受短信的手机号码
.setTemplateParam("{\"code\":\"1234\"}");//验证码
// 复制代码运行请自行打印 API 的返回值
SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
System.out.println(sendSmsResponse.statusCode);
System.out.println(sendSmsResponse.getBody());
System.out.println(sendSmsResponse.getHeaders());
}catch (Exception e){
e.printStackTrace();
}
}
}
即把System.getenv删了