阿里云实现发送短信(Java实例教程)

Posted 江東-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云实现发送短信(Java实例教程)相关的知识,希望对你有一定的参考价值。

目录

🍋发送验证码

短信发送是电信运营商提供的服务,需要访问对应的接口,不同运营商提供的接口地址肯定不一样,如果直接访问这些接口就需要判断收信息的手机号属于哪个运营商,关键在于这些接口不对个人开放,还要考虑调用短信服务的费用问题

因此目前调用短信业务都是使用第三方企业的短信服务,他们与运营商合作,封装了短信接口,调用方法,而且费用相对便宜

第三方的短信服务有很多,其中阿里云也提供了短信服务

🧣短信服务(推荐)

🐳注册购买

第一步:阿里云首页搜索短信服务

地址:添加链接描述

第二步:选择购买的短信服务

第三步:点击购买,有5条免费使用,测试也会消耗使用次数,用完了在付费购买即可

第四步:找到自己购买的云服务

  • 可以看到已购买的服务剩余数量

🏓代码测试

第一步:参考API,在【API接口】中已经给出了Java代码怎么调用该服务的接口

第二步:参考API,编写发送短信工具类

import com.aliyun.tea.TeaModel;

/***
 * @Title:
 * @ClassName: com.hssmart.common.utils.AliyunSms.java
 * @Description:
 *
 * @Copyright  suihao- Powered By 研发中心
 * @author: suihao
 * @date:  2022-11-01 15:51
 * @version V1.0
 */
public class AliyunSms 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId 
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception 
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 您的 AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 您的 AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // 访问的域名
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new com.aliyun.dysmsapi20170525.Client(config);
    



accessKeyId 以及accessKeySecret查找的方式“:
第一步点击头像打开accessKey管理

第二部进行查看所需要的accessKeyId 以及accessKeySecret

🖐Java组件封装

🥝发送实例

package com.suihao.autoconfig.properties;

public static void main(String[] args) 
    com.aliyun.dysmsapi20170525.Client client = AliyunSms.createClient("accessKeyId", "accessKeySecret");
    com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
            .setSignName("签名名称")
            .setTemplateCode("模板号码")
            .setPhoneNumbers("测试手机号")
            .setTemplateParam("\\"code\\":\\"6666\\"");
    com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
    com.aliyun.dysmsapi20170525.models.SendSmsResponse resp = client.sendSmsWithOptions(sendSmsRequest, runtime);
    com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(resp)));
  

1.SignName代表的签名名称

2.TemplateCode代表的模板code

🥝pom依赖

 <!--阿里云-->
    <developers>
        <developer>
            <id>aliyundeveloper</id>
            <name>Aliyun SDK</name>
            <email>aliyunsdk@aliyun.com</email>
        </developer>
    </developers>
    <distributionManagement>
        <snapshotRepository>
            <id>sonatype-nexus-snapshots</id>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>sonatype-nexus-staging</id>
            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>
    <scm>
        <connection></connection>
        <developerConnection></developerConnection>
        <url></url>
    </scm>
    <dependencies>
        <!--阿里云-->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>dysmsapi20170525</artifactId>
            <version>2.0.22</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>tea-openapi</artifactId>
            <version>0.2.6</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>tea-console</artifactId>
            <version>0.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>tea-util</artifactId>
            <version>0.2.14</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>tea</artifactId>
            <version>1.1.14</version>
        </dependency>
        <!---->
  </dependencies>
  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <version>1.6.3</version>
                <extensions>true</extensions>
                <configuration>
                    <serverId>sonatype-nexus-staging</serverId>
                    <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
                    <autoReleaseAfterClose>true</autoReleaseAfterClose>
                </configuration>
            </plugin>
        </plugins>
    </build>

🌈Spring.factories(略)

🍎麻烦给博主点个关注+收藏+点赞!

java实现阿里云发送短信验证码

第一步:首先得注册阿里云账号(没有阿里云账号的自己去注册一个)

第二步:开通服务 

         1. 搜索短信服务

       
 
 

        2.添加签名和模板(需要提交审核,审核通过后才可以使用,一般几分钟就可以出审核结果了)

           

 

 

第三步:编写测试代码

      1.打开帮助文档,找到SDK参考

      

     需要用什么语言写就点击安装什么的SDK,就行了

     

 

   我选择环境是推荐的是添加maven依赖

 java代码(复制调试代码进行修改就可以实现了)

package com.liusha.sendsms;
        import com.alibaba.fastjson.JSONObject;
        import com.aliyuncs.CommonRequest;
        import com.aliyuncs.CommonResponse;
        import com.aliyuncs.DefaultAcsClient;
        import com.aliyuncs.IAcsClient;
        import com.aliyuncs.exceptions.ClientException;
        import com.aliyuncs.exceptions.ServerException;
        import com.aliyuncs.http.MethodType;
        import com.aliyuncs.profile.DefaultProfile;
        import org.junit.jupiter.api.Test;
        import org.springframework.boot.test.context.SpringBootTest;

        import java.util.HashMap;

@SpringBootTest
class SendsmsApplicationTests {

    @Test
    void contextLoads() {
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "填写你的AccessKey ID", "填写你的AccessKey Secret");
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");  //不要改
        request.setSysVersion("2017-05-25");    //不要改
        request.setSysAction("SendSms");    //我选择sendSms
        //自定义的参数(手机号,验证码,签名,模板)
        request.putQueryParameter("PhoneNumbers", "发送到的手机号码");
        request.putQueryParameter("SignName", "你的签名名称");
        request.putQueryParameter("TemplateCode", "你的模版CODE");
        //构建一个短信验证码(一般都是传进来的随机数,我这里测试直接写死)
        HashMap<String, Object> map = new HashMap<>();
        map.put("code",5588);
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));
        try {
            CommonResponse response = client.getCommonResponse(request);
            //输出响应是否成功
            System.out.println(response.getData());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }

}  
运行结果

 

 

        

 

 

以上是关于阿里云实现发送短信(Java实例教程)的主要内容,如果未能解决你的问题,请参考以下文章

java实现阿里云发送短信验证码

java实现阿里云发送短信验证码

零基础大数据入门教程:Java调用阿里云短信通道服务

阿里云短信服务Java版

阿里云短信服务发送短信验证码(JAVA开发此功能)

阿里云短信服务