aliyun 短信服务配置

开通服务,添加资质、签名、模版。

详情参考:

阿里云短信服务使用(Java)_阿里云短信服务java-CSDN博客

 java对接阿里云短信服务详解(验证码,推广短信,通知短信)-CSDN博客

springboot 集成aliyun短信服务

一、引入依赖

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>dysmsapi20170525</artifactId>
  <version>3.0.0</version>
</dependency>

二、相关示例代码

来自官方文档:

package com.aliyun.sample;

import com.aliyun.teaopenapi.models.Config;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import static com.aliyun.teautil.Common.toJSONString;

public class Sample {
    public static Client createClient() throws Exception {
        Config config = new Config()
                // 配置 AccessKey ID
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 配置 AccessKey Secret
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        
        // 配置 Endpoint
        config.endpoint = "dysmsapi.aliyuncs.com";

        return new Client(config);
    }

    public static void main(String[] args) throws Exception {
        // 初始化请求客户端
        Client client = Sample.createClient();

        // 构造请求对象,请填入请求参数值
        SendSmsRequest sendSmsRequest = new SendSmsRequest()
                .setPhoneNumbers("<YOUR_VALUE>")
                .setSignName("<YOUR_VALUE>")
                .setTemplateCode("<YOUR_VALUE>")
                .setTemplateParam("<YOUR_VALUE>");

        // 获取响应对象
        SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);

        // 响应包含服务端响应的 body 和 headers
        System.out.println(toJSONString(sendSmsResponse));
    }
}

 注意点

Config config = new Config()
                // 配置 AccessKey ID
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 配置 AccessKey Secret
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));

System.getenv需要把keyId 和 keySecret 配置到电脑的环境变量中。如果不配置,会报空指针异常 。

java.lang.NullPointerException

at com.aliyun.teaopenapi.Client.doRequest(Client.java:885)     at com.aliyun.teaopenapi.Client.callApi(Client.java:1170)     at com.aliyun.dysmsapi20170525.Client.sendSmsWithOptions(Client.java:2714)     at com.aliyun.dysmsapi2...

文章后面会写如何配置。最后也写了简单写法

部分参数参考:

 endpoint为固定值:   https://api.aliyun.com/product/Dysmsapi

三、附录设置环境变量

设置环境变量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET为例:

  • Linux和macOS系统配置方法

    1. 创建.bash_profile文件

      说明

      如果是第一次设置环境变量,可以使用touch ~/.bash_profile创建一个配置文件,如果已经存在配置文件,则使用vim ~/.bash_profile命令直接编辑文件。

      touch ~/.bash_profile
      vim ~/.bash_profile
    2. 配置.bash_profile文件

      # 将以下命令中的<ACCESS_KEY_ID>和<ACCESS_KEY_SECRET>替换为您自己的AccessKey ID和AccessKey Secret。
      # 变量名称可以根据实际情况进行替换,例如OSS_ACCESS_KEY_ID、OSS_ACCESS_KEY_SECRET。
      export ALIBABA_CLOUD_ACCESS_KEY_ID=<ACCESS_KEY_ID>
      export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ACCESS_KEY_SECRET>

      编辑完成后保存退出。

    3. 使用.bash_profile文件

      # 使配置文件生效
      source ~/.bash_profile
      # 显示配置是否生效
      echo $ALIBABA_CLOUD_ACCESS_KEY_ID

      若返回正确的AccessKey ID,则说明配置成功。

四、简单写法

只想要做简单测试,不需要配置环境变量:

import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;

public class smsTest {
    public static void main(String[] args) {
        Config config = new Config()
                //这里修改为我们上面生成自己的AccessKey ID
                .setAccessKeyId("xxxxxxxx")

                //这里修改为我们上面生成自己的AccessKey Secret
                .setAccessKeySecret("xxxxxxxx");
        // 访问的域名
        config.endpoint = "dysmsapi.aliyuncs.com";
        try{
            Client client = new Client(config);
            SendSmsRequest sendSmsRequest = new SendSmsRequest()
                    .setSignName(signName)//短信签名
                    .setTemplateCode(Tcode)//短信模板
                    .setPhoneNumbers(XXXXX)//这里填写接受短信的手机号码
                    .setTemplateParam("{\"code\":\"1234\"}");//验证码
            // 复制代码运行请自行打印 API 的返回值
            SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
            System.out.println(sendSmsResponse.statusCode);
            System.out.println(sendSmsResponse.getBody());
            System.out.println(sendSmsResponse.getHeaders());

        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

即把System.getenv删了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值