springboot项目集成阿里云的SMS国内短信服务实现验证码发送功能

一、开通阿里云的短信服务功能

点击此处可查看阿里云短信服务产品文档icon-default.png?t=N7T8https://help.aliyun.com/zh/sms/

1、短信服务开通

1.1、阿里云首页搜索框输入短信服务点击短信服务

点击免费开通

扫码加入钉钉群,后开通服务

1.2、进入短信服务控制台

完成快速学习和测试

1.3第一步、新增资质

填写基础信息,这里选择自用,提交申请之后等待审核通过

1.4第二步、申请签名

签名名称建议填写自己的应用名、网站名等,系统会将已审核通过的短信签名添加到短信内容的开头,并与短信内容一起发送给接收方。例如

填写相关信息,提交等待审核通过

1.5第三步、申请模版

这里可以选择自己合适的模版

等待模版申请通过,第四,第五步可以跳过

2、用户与用户组权限管理

2.1、进入管理控制台

2.2、创建用户组

2.3、创建子用户

注意这个AccessKey IDAccessKey Secret 一定要保存下来,后面需要使用并且关闭该页面后无法再次获取 AccessKey Secret

2.4、添加子用户到用户组

2.5、用户组权限管理

在这里只添加短信服务的权限

3、购买短信套餐包

根据个人选择购买

4、在线测试签名模版API

到这里阿里云的短信服务功能开通完成,接下来可以在项目中集成

二、springboot集成阿里云短信服务,用来发送验证码

1、添加Maven依赖

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-dysmsapi20170525</artifactId>
    <version>3.0.0</version>
</dependency>

2、这里将阿里云短信发送接口定义为一个工具类

在这里需要配置访问键与秘钥,就是在2.3创建子用户中保存的AccessKeyIdAccessKeySecret

package com.aynu.yoyo.utils;


import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.service.dysmsapi20170525.AsyncClient;
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsResponse;
import com.google.gson.Gson;
import darabonba.core.client.ClientOverrideConfiguration;

import java.util.concurrent.CompletableFuture;

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

	/**
	 * 发送短信
	 * @param signName 签名
	 * @param templateCode 模板
	 * @param phoneNumbers 手机号
	 * @param param 参数
	 */
	public static void sendMessage1(String signName, String templateCode,String phoneNumbers,String param) throws Exception {

		StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
				.accessKeyId("AccessKeyId") //注意将此处AccessKeyId替换为2.3中保存的子用户的AccessKeyId
				.accessKeySecret("AccessKeySecret")//注意将此处AccessKeySecret替换为2.3中保存的字用户的AccessKeySecret
				.build());

		AsyncClient client = AsyncClient.builder()
				.region("cn-wulanchabu") // Region ID
				.credentialsProvider(provider)
				.overrideConfiguration(
						ClientOverrideConfiguration.create()
								.setEndpointOverride("dysmsapi.aliyuncs.com")
				)
				.build();

		SendSmsRequest sendSmsRequest = SendSmsRequest.builder()
				.signName(signName)
				.templateCode(templateCode)
				.phoneNumbers(phoneNumbers)
				.templateParam("{\"code\":\""+param+"\"}")
				.build();

		CompletableFuture<SendSmsResponse> response = client.sendSms(sendSmsRequest);
		SendSmsResponse resp = response.get();
		System.out.println(new Gson().toJson(resp));

		client.close();
	}

}

3、在自己的项目中调用该工具类发送验证码

上图1处填写内容

上图2处填写内容

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要在阿里云短信控制台中创建签名和模板,并获取到 AccessKeyId 和 AccessKeySecret。 接下来,在Spring Boot项目中添加阿里云 Java SDK的依赖: ``` <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId> <version>1.0.0</version> </dependency> ``` 然后,在项目的 application.properties 文件中添加阿里云短信服务的相关配置: ``` aliyun.sms.accessKeyId=yourAccessKeyId aliyun.sms.accessKeySecret=yourAccessKeySecret aliyun.sms.signName=yourSignName aliyun.sms.templateCode=yourTemplateCode ``` 在代码中,你可以使用以下示例代码发送国际短信: ```java import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.sms.model.v20170628.SendSmsRequest; import com.aliyuncs.sms.model.v20170628.SendSmsResponse; import java.util.Arrays; public class SmsUtil { private String accessKeyId; private String accessKeySecret; private String signName; private String templateCode; public SmsUtil(String accessKeyId, String accessKeySecret, String signName, String templateCode) { this.accessKeyId = accessKeyId; this.accessKeySecret = accessKeySecret; this.signName = signName; this.templateCode = templateCode; } public boolean sendSms(String phoneNumber, String message) { IClientProfile profile = DefaultProfile.getProfile("default", accessKeyId, accessKeySecret); DefaultProfile.addEndpoint("default", "default", "Dysmsapi", "dysmsapi.aliyuncs.com"); IAcsClient client = new DefaultAcsClient(profile); SendSmsRequest request = new SendSmsRequest(); request.setPhoneNumbers(phoneNumber); request.setSignName(signName); request.setTemplateCode(templateCode); request.setTemplateParam("{\"code\":\"" + message + "\"}"); try { SendSmsResponse response = client.getAcsResponse(request); if (response.getCode() != null && response.getCode().equals("OK")) { return true; } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } return false; } public static void main(String[] args) { // 使用示例 SmsUtil smsUtil = new SmsUtil( "yourAccessKeyId", "yourAccessKeySecret", "yourSignName", "yourTemplateCode" ); boolean result = smsUtil.sendSms("+86xxxxxxxxxxx", "yourMessage"); System.out.println(result); } } ``` 其中,phoneNumber 是接收短信的手机号码,message 是短信内容,可以根据模板中定义的变量替换。调用 sendSms 方法即可发送短信
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值