创建key和秘钥

在短信控制台申请签名和短信模板(要先开通短信服务,购买额度),拿到签名名称
和模板CODE
,发送短信要用
java发送短信
<!-- 阿里云短信 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.0</version>
</dependency>
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.wzw.entity.SmsConfigEntity;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.Map;
@Slf4j
@Component
public class SmsUtil {
public JSONObject sendSms(SmsConfigEntity smsConfig, Long phone, Map<String,String> templateParam) {
try {
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou",
smsConfig.getAccessKeyId(),
smsConfig.getAccessKeySecret()
);
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain(smsConfig.getEndpoint());
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("PhoneNumbers", JSON.toJSONString(phone));
request.putQueryParameter("SignName", smsConfig.getSignName());
您的验证码${code},该验证码5分钟内有效,请勿泄漏于他人!
request.putQueryParameter("TemplateParam", JSON.toJSONString(templateParam));
request.putQueryParameter("RegionId", "cn-hangzhou");
request.putQueryParameter("TemplateCode", smsConfig.getTemplateCode());
CommonResponse response = client.getCommonResponse(request);
JSONObject responseJSONObject = JSONObject.parseObject(response.getData());
String code = responseJSONObject.get("Code").toString();
log.info("SMS code:{}", code);
log.info("手机号: {},{}", JSON.toJSONString(phone), JSON.toJSONString(templateParam));
switch (code) {
case "OK":
log.info("短信发送成功");
break;
case "isv.OUT_OF_SERVICE":
log.error("短信发送失败,原因:业务停机!");
break;
case "isv.ACCOUNT_NOT_EXISTS":
log.error("短信发送失败,原因:账户不存在!");
break;
case "isv.ACCOUNT_ABNORMAL":
log.error("短信发送失败,原因:账户异常!");
break;
case "isp.SYSTEM_ERROR":
log.error("短信发送失败,原因:系统错误!");
break;
case "isv.MOBILE_NUMBER_ILLEGAL":
log.error("短信发送失败,原因:非法手机号!");
break;
case "isv.BUSINESS_LIMIT_CONTROL":
log.error("短信发送失败,原因:业务限流!");
break;
case "isv.AMOUNT_NOT_ENOUGH":
log.error("短信发送失败,原因:账户余额不足!");
break;
default:
log.error("短信发送失败: {}", JSON.toJSONString(responseJSONObject));
}
return responseJSONObject;
} catch (Exception e) {
log.error("SendSmsUtils sendSms error:{}", e.getMessage());
return JSONObject.parse(e.getMessage());
}
}
}