通过阿里云发送短信

通过阿里云发送短信

这里通过测试API来发送

阿里云网址

查看官网

  • 搜索短信服务

  • 绑定测试手机号,点击调用API

  • 可以看到有发送短信的示例代码

  • 创建用于发送短信的AccessKey

  • 创建完用户后给其分配发送SMS的权限

  • 给用户创建AccessKey(创建完记得保存)

代码

  • 根据示例代码,首先导入依赖
1
2
3
4
5
6
7
8
9
10
11
<!-- 阿里云短信服务 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.6.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>2.2.1</version>
</dependency>
  • 这里通过将AccessKey 和密钥放到配置文件中,再通过@Value注解来读取

    1
    2
    3
    4
    5
    6
    # 地域节点
    aliyun.sms.regionId=default
    # 访问ID
    aliyun.sms.accessKeyId=
    # 访问密钥
    aliyun.sms.secret=
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    @Component
    // InitializingBean接口为bean提供了属性初始化后的处理方法
    public class ConstantPropertiesUtils implements InitializingBean {

    @Value("${aliyun.sms.regionId}")
    private String regionId;

    @Value("${aliyun.sms.accessKeyId}")
    private String accessKeyId;

    @Value("${aliyun.sms.secret}")
    private String secret;

    public static String REGION_Id;
    public static String ACCESS_KEY_ID;
    public static String SECRET;

    @Override
    public void afterPropertiesSet() throws Exception {
    REGION_Id = regionId;
    ACCESS_KEY_ID = accessKeyId;
    SECRET = secret;
    }
    }
  • 创建发送短信的service

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    @Service
    public class MsmServiceImpl implements MsmService {
    @Override
    public boolean send(String phone, String code) {

    if (StringUtils.isEmpty(phone))
    return false;

    // 基础配置
    DefaultProfile profile = DefaultProfile.getProfile(
    ConstantPropertiesUtils.REGION_Id, // 地域节点
    ConstantPropertiesUtils.ACCESS_KEY_ID, // 访问ID
    ConstantPropertiesUtils.SECRET); //访问密钥

    IAcsClient client = new DefaultAcsClient(profile);

    SendSmsRequest request = new SendSmsRequest();
    request.setSignName("阿里云短信测试"); // 短信签名
    request.setTemplateCode("SMS_154950909"); // 短信模板
    request.setPhoneNumbers(phone); // 发送的手机号
    request.setTemplateParam("{\"code\":\"" + code + "\"}"); // 发送的验证码

    try {
    // 发送短信
    SendSmsResponse response = client.getAcsResponse(request);
    return "OK".equals(response.getCode());
    } catch (ServerException e) {
    e.printStackTrace();
    } catch (ClientException e) {
    System.out.println("ErrCode:" + e.getErrCode());
    System.out.println("ErrMsg:" + e.getErrMsg());
    System.out.println("RequestId:" + e.getRequestId());
    }

    return false;
    }
    }

通过阿里云发送短信
http://xwww12.github.io/2022/11/12/其他/通过阿里云发送短信/
作者
xw
发布于
2022年11月12日
许可协议