业务需求需要对接阿里云短信,根据阿里云官方文档固有此文。
package com.demo.service
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.profile.DefaultProfile
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
/**
* @author watson haw
* @date 2021/5/21 2:30 下午
*/
interface IAliyunSmsService {
fun sendSms(PhoneNumbers: String,
SignName: String,
TemplateCode: String,
TemplateParam: String): String
fun sendSmsBatch(
PhoneNumberList: String,
SignName: String,
TemplateCode: String,
TemplateParam: String
): String
}
@Service
class AliyunSmsService : IAliyunSmsService {
@Value("\${aliyun.accessKeyId}")
lateinit var accessKeyId: String
@Value("\${aliyun.accessSecret}")
lateinit var accessSecret: String
@Value("\${aliyun.sms.region}")
lateinit var region: String
@Value("\${aliyun.sms.signName}")
lateinit var signName: String
override fun sendSms(
PhoneNumbers: String,
SignName: String,
TemplateCode: String,
TemplateParam: String
): String {
// 初始化参数
val profile = DefaultProfile.getProfile(region, accessKeyId, accessSecret)
val client: IAcsClient = DefaultAcsClient(profile)
// 拼装请求
val request = CommonRequest()
request.sysMethod = com.aliyuncs.http.MethodType.POST
request.sysDomain = "dysmsapi.aliyuncs.com"
request.sysVersion = "2017-05-25"
request.sysAction = "SendSms"
request.putQueryParameter("TemplateCode", TemplateCode)
request.putQueryParameter("TemplateParam", TemplateParam)
request.putQueryParameter("SignName", SignName)
request.putQueryParameter("PhoneNumbers", PhoneNumbers)
// 发送请求
try {
val response: CommonResponse = client.getCommonResponse(request)
return response.data
} catch (e: ServerException) {
e.printStackTrace()
} catch (e: ClientException) {
e.printStackTrace()
}
return "获取短信接口失败"
}
override fun sendSmsBatch(
PhoneNumberList: String,
SignName: String,
TemplateCode: String,
TemplateParam: String
): String {
val profile = DefaultProfile.getProfile(region, accessKeyId, accessSecret)
val client: IAcsClient = DefaultAcsClient(profile)
// 拼装请求
val request = CommonRequest()
request.sysMethod = com.aliyuncs.http.MethodType.POST
request.sysDomain = "dysmsapi.aliyuncs.com"
request.sysVersion = "2017-05-25"
request.sysAction = "SendBatchSms"
request.putQueryParameter("TemplateCode", TemplateCode)
request.putQueryParameter("TemplateParamJson", TemplateParam)
request.putQueryParameter("SignNameJson", SignName)
request.putQueryParameter("PhoneNumberJson", PhoneNumberList)
// 发送请求
try {
val response: CommonResponse = client.getCommonResponse(request)
return response.data
} catch (e: ServerException) {
e.printStackTrace()
} catch (e: ClientException) {
e.printStackTrace()
}
return "获取短信接口失败"
}
}
Spring Boot application.yml配置
aliyun:
accessKeyId: 你的阿里云keyid
accessSecret: 你的阿里云秘钥
sms:
region: 你的短信资源
signName: 你的过审短信签名