阿里云实现短信发送

在项目中,如果要实现短信发送功能,需要调用第三方提供的短信服务,市面上有很多第三方提供的短信服务,这些第三方短信服务会和各个运营商(移动、联通、电信)对接,我们只需要注册成为会员,并且按照提供的开发文档进行调用就可以发送短信。需要说明的是,这些短信服务一般都是收费服务。

以阿里云为例:

阿里云短信服务官方网站: 短信服务_企业短信营销推广_验证码通知-阿里云

先注册账号,然后登录阿里云系统控制台

注册成功后,点击登录按钮进行登录。登录后进入控制台, 在左上角的菜单栏中搜索短信服务。第一次使用,需要点击,并开通短信服务

 

 开通短信服务之后,进入短信服务管理页面,选择国内消息菜单,我们需要在这里添加短信签名。

短信签名就是短信发送者的署名,表明发送方的身份

 

注意:

目前,阿里云短信服务申请签名主要针对企业开发,个人申请时有一定难度的,在审核时,会审核资质,需要上传营业执照 。

设置短信模板,切换到【模板管理】标签页:

 短信模板包含短信发送内容,场景,变量信息。

 

 上面的内容中把${code}占位符替换成对应的验证码数据

 添加的短信模板,也是需要进行审核的只有审核通过,才可以正常使用。

设置AccessKey

AccessKey是访问阿里云API的密匙,具有账户的完全权限,在后面通过API调用阿里云短信服务的接口发送短信,那么就必须要设置AccessKey。

点击右上角的用户头像,选择"AccessKey管理",这时就可以进入到AccessKey的管理界面

 进入到AccessKey的管理界面之后,提示两个选项 "继续使用AccessKey" 和 "开始使用子用户AccessKey",两个区别如下:

1). 继续使用AccessKey

如果选择的是该选项,我们创建的是阿里云账号的AccessKey,是具有账户的完全权限,有了这个AccessKey以后,我们就可以通过API调用阿里云的服务,不仅是短信服务,其他服务(OSS,语音服务,内容安全服务,视频点播服务...等)也可以调用。 相对来说,并不安全,当前的AccessKey泄露,会影响到我当前账户的其他云服务。

2). 开始使用子用户AccessKey

可以创建一个子用户,这个子用户我们可以分配比较低的权限,比如仅分配短信发送的权限,不具备操作其他的服务的权限,即使这个AccessKey泄漏了,也不会影响其他的云服务, 相对安全。

创建子用户AccessKey

配置子账号权限

 

 

经过上述的权限配置之后,那么新创建的这个 reggie 用户,仅有短信服务操作的权限,不具备别的权限,即使当前的AccessKey泄漏了,也只会影响短信服务,其他服务是不受影响的。

代码开发

官方文档: 短信服务 - 帮助中心 - 阿里云

具体实现:

在pomxml中

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.16</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>2.1.0</version>
</dependency>

将官方提供的main方案封装成一个工具类

/**
 * 短信发送工具类
 */
public class SMSUtils {

	/**
	 * *****************************
	 添加http请求工具类在pom.xml中
	 <dependency>
	 <groupId>cn.hutool</groupId>
	 <artifactId>hutool-all</artifactId>
	 <version>4.5.15</version>
	 </dependency>
	 * *****************************
	 String mobile = "";
	 //验证码
	 String code = "5778";
	 //签名ID。(联系客服申请。测试请用:2e65b1bb3d054466b82f0c9d125465e2)
	 String smsSignId="2e65b1bb3d054466b82f0c9d125465e2";
	 //模板ID。(联系客服申请。测试ID请用:908e94ccf08b4476ba6c876d13f084ad,短信内容为 { 验证码:**code**,**minute**分钟内有效,请勿泄漏于他人!})
	 String templateId="908e94ccf08b4476ba6c876d13f084ad";
	 //应用code  https://market.console.aliyun.com/imageconsole/index.htm?#/bizlist?_k=r5f9m0 查找
	 String appCode="";
	 */
	public static void sendMessage(String smsSignId, String templateId,String mobile,String code,String appCode){
//手机号码


		//请求连接
		String host = "https://gyytz.market.alicloudapi.com/sms/smsSend";
		//拼装请求体
		Map<String, Object> querys = new HashMap<String, Object>();
		querys.put("mobile", mobile);
		querys.put("param", "**code**:"+code+",**minute**:5");
		querys.put("smsSignId", smsSignId);
		querys.put("templateId", templateId);

		try {
			String result = HttpRequest.post(host)
									   .header("Authorization", "APPCODE " + appCode)//头信息,多个头信息多次调用此方法即可
									   .form(querys)//表单内容
									   .timeout(20000)//超时,毫秒
									   .execute().body();
			System.out.println(result);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值