Springboot 实现阿里云发送短信

项目目录Springboot 实现阿里云发送短信

一、导入依赖

<dependency>
 <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.0.6</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>1.1.0</version>
</dependency>

二、配置阿里云

resources目录下新建配置文件oss-conf.properties

# 阿里云配置
# 配置自己的accessKeyId
aliyun.access-key-id=xxxx
# 配置自己的accessKeySecret
aliyun.access-key-secret=xxxx

三、添加配置类

添加配置类 AliYunProperties

@Data
@ConfigurationProperties(prefix = "aliyun")
@PropertySource(value = {"classpath:oss-conf.properties"}, encoding = "UTF-8")
public class AliYunProperties {
    private String accessKeyId;
    private String accessKeySecret;
}

四、激活配置类

新建配置类 EnableConfig

@Configuration
@EnableConfigurationProperties({AliYunOssProperties.classAliYunProperties.class})
@EnableRetry
public class EnableConfig 
{
}

五、添加 AliYunSmsService

添加类 AliYunSmsService 和 AliYunSmsServiceImpl

public interface AliYunSmsService {
    /**
     * 发送短信
     * @param phone
     * @return
     * @throws Exception
     */

    Boolean sendSms(String phone);
}
@Service
@Slf4j
@RequiredArgsConstructor
public class AliYunSmsServiceImpl implements AliYunSmsService {
    private final AliYunProperties aliYunProperties;

    @Override
    public Boolean sendSms(String phone) {
        // 短信API产品名称(无需修改)
        final String product = "Dysmsapi";
        // 短信API产品域名(无需修改)
        final String domain = "dysmsapi.aliyuncs.com";
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou",
                aliYunProperties.getAccessKeyId(),
                aliYunProperties.getAccessKeySecret());
        DefaultProfile.addEndpoint("cn-hangzhou""cn-hangzhou", product, domain);
        IAcsClient acsClient = new DefaultAcsClient(profile);
        SendSmsRequest sendSmsRequest = getSendSmsRequest(phone);
        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(sendSmsRequest);
        log.info("[发送短信]phone={}, result={}", phone, sendSmsResponse.getCode());
        return sendSmsResponse.getCode() != null && "OK".equals(sendSmsResponse.getCode());
    }

    /**
     * 获取请求
     * @param phone
     * @return
     */

    private SendSmsRequest getSendSmsRequest(String phone) {
        SendSmsRequest request = new SendSmsRequest();
        request.setMethod(MethodType.POST);
        // 多个手机号逗号分割 上限1000个
        request.setPhoneNumbers(phone);
        // 短信签名(替换自己的签名)
        request.setSignName("连连商城");
        // 短信模板(替换自己的模板)
        request.setTemplateCode("SMS_222860055");
        request.setTemplateParam("{"code": "" + getCode() + ""}");
        return request;
    }

    /**
     * 生成验证码
     * @return
     */

    public String getCode() {
        Random random = new Random();
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            result.append(random.nextInt(10));
        }
        return result.toString();
    }

}

至此,就可以使用 AliYunSmsService 来发送短信了!!

六、新建一个 Controller 来测试一下

新建一个 Controller 来测试一下Springboot 实现阿里云发送短信

使用 Postman 发送请求Springboot 实现阿里云发送短信

发送成功Springboot 实现阿里云发送短信

Springboot 实现阿里云发送短信


原文始发于微信公众号(连帆起航):Springboot 实现阿里云发送短信

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/239275.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!