一. AccessKey管理
内容包括:开启子用户AccessKey,创建用户组,给用户组添加sms短信服务权限,创建用户,添加用户到用户组中。
详细操作:
登录阿里云,点击控制台右上角的头像,点击AccessKey 管理,拿到阿里云AccessKey
弹出安全提示,点击 开始使用子用户AccessKey
进入RAM 访问控制,新建用户组和用户
添加用户
填写登录名称和显示名称,勾选编程访问(一定要勾选,不然没法通过API编程发送短信)
点击用户组名称
点击组员管理,添加组员,将刚才创建的用户添加到用户组中
进入人员管理-->用户-->认证管理-->用户AccessKey-->点击创建AccessKey
弹出AccessKey Secret(密码),点击下载CSV文件或复制,保存好密码,
密码不要泄露给其他人,如果发现泄露,点击上图的禁用或删除相关的AccessKey。
二、开通阿里云短信服务
内容:开通短信服务、充值、添加短信模板、添加签名
控制台搜索短信服务-->点击箭头指向的短信服务
开通后,可以点击快速学习和帮助文档学习。
添加短信模板
提交后,进入审核中状态,等待审核通过(等待几分钟,刷新页面),关注模板CODE一列的值,后面将用到
添加签名
然后等待审核通过(需要等待几分钟)
在发短信之前,需要先充值,点击费用-->充值,根据短信资费(0.045元/条),充值一定的金额。
三、使用Java代码发送短信
环境:IDEA、JDK1.8、maven3.3.9、Sparingboot2.2.7
打开IDEA,File-->New-->Project-->Empty Project,新建出一个空的工程
给空的工程添加Spring Boot模块
File-->New-->Module-->Spring Initializr
next-->next-->添加Web模块
至finish,确保module模块添加到空工程中。
打开短信服务控制台-->SDK参考-->安装Java SDK-->添加Maven依赖
添加pom.xml
添加aliyun-java-sdk-core用于发送短信,
为了方便构建数据,再添加fastjson
com.aliyun
aliyun-java-sdk-core
4.1.0
com.alibaba
fastjson
1.2.62
点击快速学习,选择如下箭头指向的信息,点击查看API demo
复制上方Java代码到DemoApplicationTests.java类中,代码作适当的修改如下:
代码如下:
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
@SpringBootTest
class DemoApplicationTests {
@Test
void contextLoads() {
//连接阿里云
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "");//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("PhoneNumbers", "1xxxx");//替要发送到的手机号码
request.putQueryParameter("SignName", "老梁说java");//短信签名
request.putQueryParameter("TemplateCode", "SMS_189762676");//短信模板号
//构建一个短信验证码
HashMap map = new HashMap();
map.put("code",112233);
request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}
注意:以下几点要注意修改
1.accessKeyId和accessSecret要替换成第一步申请到的值
2.("PhoneNumbers", "1xxxx");//替要发送到的手机号码
3.("SignName", "老梁说java");//短信签名
4.("TemplateCode", "SMS_189762676");//短信模板号
单元测试运行contextLoads()方法后就可以发送短信了。
收到的短信效果如下:
完成!enjoy it!