java集成阿里云短信服务模版并发送短信

本文介绍了如何使用阿里云的JavaSDK进行短信服务的配置,包括依赖管理(如pom.xml中的依赖),以及如何发送短信通知,如验证码、支付成功通知和入驻审核通知等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

全部配置成功后可以获取到对应的模版code

pom.xml

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-green</artifactId>
            <version>3.6.6</version>
        </dependency>

AliSms

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;

/**
 * 阿里云短信工具类
 * aliyun-java-sdk-core.jar
 */
public class AliSms {
	
	private static final String tpl = "SMS_xxxxxxx";
	// 支付成功通知模版
	private static final String pay_success = "SMS_xxxxxxx";
	// 入驻审核通知模版
	private static final String settle_in = "SMS_xxxxxx";
	// 下单成功提醒(商户)模版
	private static final String merchant_remind = "SMS_xxxxx";
	// 短信签名
	private static final String sign = "配置的签名名称1";
	private static final String notice = "配置的签名名称2";

	// 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
	private static final String accessKeyId = "xxxxxxxxxx";
	private static final String accessKeySecret = "xxxxxxxxxxxxx";
	
	public static void main(String[] args) {
		sendMsg("173xxxxxxxx", pay_success,"{\"no\":\"" + "544354134651215" + "\"}");
	}
	
	/**
	 * 发送验证码
	 * 
	 * @param phone
	 *            手机号
	 * @param code
	 *            验证码
	 */
	public static CommonResponse sendCode(String phone, String code) {
		DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
		IAcsClient client = new DefaultAcsClient(profile);

		CommonRequest request = new CommonRequest();
		// request.setProtocol(ProtocolType.HTTPS);
		request.setMethod(MethodType.POST);
		request.setDomain("dysmsapi.aliyuncs.com");
		request.setVersion("2024-04-02");
		request.setAction("SendSms");
		request.putQueryParameter("RegionId", "cn-hangzhou");
		request.putQueryParameter("SignName", sign);
		request.putQueryParameter("PhoneNumbers", phone);
		request.putQueryParameter("TemplateCode", tpl);
		request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");
		try {
			CommonResponse response = client.getCommonResponse(request);
			System.out.println(response.getData());
			return response;
		} catch (ServerException e) {
			e.printStackTrace();
		} catch (ClientException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 订单支付发送短信通知
	 * @param phoneNumbers
	 * @param templateParam
	 * @param type 1:支付成功通知模版 2:入驻审核通知 3:下单成功提醒(商户)
	 * @return
	 */
	public static CommonResponse sendPaySuccessMsg(String phoneNumbers,String templateParam,String templateParam2,Integer type) {
		DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
		IAcsClient client = new DefaultAcsClient(profile);

		CommonRequest request = new CommonRequest();
		// request.setProtocol(ProtocolType.HTTPS);
		request.setMethod(MethodType.POST);
		request.setDomain("dysmsapi.aliyuncs.com");
		request.setVersion("2024-04-02");
		request.setAction("SendSms");
		request.putQueryParameter("RegionId", "cn-hangzhou");
		request.putQueryParameter("SignName", notice);
		//TemplateParam为配置的参数名称
		if(type==1){
			request.putQueryParameter("TemplateCode", notice);
			request.putQueryParameter("TemplateParam", "{\"no\":\"" + templateParam + "\"}");
		}else if(type==2){
			request.putQueryParameter("TemplateCode", settle_in);
			request.putQueryParameter("TemplateParam", "{\"result\":\"" + templateParam + "\",\"date\":\""+templateParam2+"\"}");
		}else if(type==3){
			request.putQueryParameter("TemplateCode", merchant_remind);
			request.putQueryParameter("TemplateParam", "{\"no\":\"" + templateParam + "\"}");
		}
		request.putQueryParameter("PhoneNumbers", phoneNumbers);
		try {
			CommonResponse response = client.getCommonResponse(request);
			System.out.println(response.getData());
			return response;
		} catch (ServerException e) {
			e.printStackTrace();
		} catch (ClientException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 后台发送短信
	 * 
	 * @param phoneNumbers
	 *            手机号
	 * @param templateCode
	 * 			 短信模板           
	 */
	public static CommonResponse sendMsg(String phoneNumbers,String templateCode,String templateParam) {
		DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
		IAcsClient client = new DefaultAcsClient(profile);

		CommonRequest request = new CommonRequest();
		// request.setProtocol(ProtocolType.HTTPS);
		request.setMethod(MethodType.POST);
		request.setDomain("dysmsapi.aliyuncs.com");
		request.setVersion("2024-04-02");
		request.setAction("SendSms");
		request.putQueryParameter("RegionId", "cn-hangzhou");
		request.putQueryParameter("SignName", notice);
		request.putQueryParameter("PhoneNumbers", phoneNumbers);
		request.putQueryParameter("TemplateCode", templateCode);
		request.putQueryParameter("TemplateParam", templateParam);
		try {
			CommonResponse response = client.getCommonResponse(request);
			System.out.println(response.getData());
			return response;
		} catch (ServerException e) {
			e.printStackTrace();
		} catch (ClientException e) {
			e.printStackTrace();
		}
		return null;
	}
}
### 阿里云短信验证码服务开通教程 #### 一、准备工作 为了顺利开通使用阿里云短信验证码服务,需完成一系列前期设置工作。这包括但不限于登录阿里云账号,搜索了解短信服务的相关信息。 #### 二、开通与购买 通过阿里云平台首页的搜索栏输入“短信服务”,随后点击进入的产品详情页面中找到“免费开通”的选项进行操作[^1]。成功开通后可根据实际业务量的需求选购相应的短信套餐包来满足日常运营中的消息通知需求。 #### 三、资质审核及相关申请 依据具体应用场景和个人/企业身份的不同,在此阶段要提交必要的证明文件以供官方审查确认;同时还需要分别完成签名以及模板两项重要内容的申报流程。对于个人开发者而言,仅限于向预先登记好的测试号码发送验证信息作为调试用途。 #### 四、获取Access Key 前往RAM (Resource Access Management) 控制台界面执行如下动作:新建子账户及其所属群组,授予适当的操作权限范围内的授权许可。在此过程中将会自动生成一对用于后续API调用鉴权认证的关键凭证——`accessKeyId` 和 `accessKeySecret` ,务必妥善保管好这些敏感数据以防泄露风险发生。 #### 五、集成开发环境配置 最后一步则是将上述获得的各项参数正确填入至应用程序内部实现自动化触发机制下的短息下发功能逻辑构建当中去。例如可以参照以下Java代码片段展示的方式定义一个简单的发送方法: ```java public class SmsSender { private static final String ACCESS_KEY_ID = "your-access-key-id"; private static final String ACCESS_KEY_SECRET = "your-access-key-secret"; /** * 发送短信验证码的方法 * * @param phoneNumber 接收方电话号码 * @param templateCode 使用的模版编号 * @param params 动态替换的内容集合 */ public void sendSms(String phoneNumber, String templateCode, Map<String, Object> params){ DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", ACCESS_KEY_ID, ACCESS_KEY_SECRET); IAcsClient client = new DefaultAcsClient(profile); SendSmsRequest request = new SendSmsRequest(); request.setPhoneNumbers(phoneNumber); request.setSignName("您的签名名称"); request.setTemplateCode(templateCode); request.setTemplateParam(JSON.toJSONString(params)); try{ SendSmsResponse response = client.getAcsResponse(request); System.out.println(response.getMessage()); }catch(ClientException e){ e.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一名落魄的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值