1,引入jar包
<!-- aliyun -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>
2,申请阿里云短信服务
3,创建对象,把2步骤信息读入容器中
4,创建短信模板信息
5,创建客户端IAcsClient
@Configuration
public class AliSmsConfig {
@Autowired
private OssProperties ossProperties;
@Bean
public IAcsClient acsClient() throws ClientException {
/** AK **/
String accessKeyId = ossProperties.getAccessKeyId();
String accessKeySecret = ossProperties.getSecretAccessKey();
String regionId = ossProperties.getRegion();
// 初始化acsClient,暂不支持region化
IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint(regionId, regionId, Constant.PRODUCT, Constant.DOMAIN);
IAcsClient acsClient = new DefaultAcsClient(profile);
return acsClient;
}
}
6,创建发送短息接口
public interface ISmsService {
boolean sendSms(String phone, String code);
}
7,实现短信服务,调用接口
@Service
@Slf4j
public class SmsServiceImpl implements ISmsService {
@Autowired
IAcsClient acsClient;
@Override
public boolean sendSms(String phone, String code) {
// 组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest request = new SendSmsRequest();
// 必填:待发送手机号
request.setPhoneNumbers(phone);
// 必填:短信签名-可在短信控制台中找到
request.setSignName(Constant.SignName);
// 必填:短信模板-可在短信控制台中找到
request.setTemplateCode(Constant.SMS_CODE);
// 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request.setTemplateParam(String.format("{\"code\":\"%s\"}", code));
// hint 此处可能会抛出异常,注意catch
try {
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if (ObjectUtils.isEmpty(sendSmsResponse)
&& !StringUtils.equals(sendSmsResponse.getCode(), Constant.RESPONSE_SUCCESS)) {
log.error(String.format("send sms err phone:%s,code:%s,msg:%s", phone, code,
sendSmsResponse.getMessage()));
return false;
}
} catch (ClientException e) {
log.info(e.getErrMsg());
return false;
}
return true;
}
}