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

开发此功能需注册阿里云账号,并开通短信服务(免费开通)

充值后,不会影响业务的正常使用!(因为发送验证类短信:1-10万范围的短信是0.045元/条)。开发测试使用,充2块钱测试足够了

可参考阿里云官方开发文档了解详情,文档中写的也是很详细了。。。

https://help.aliyun.com/product/44282.html

  代码编写之前需要准备几个东西

    1,aliyun-java-sdk-core.jar ,  aliyun-java-sdk-dysmsapi.jar  这2个jar包(文末附上jar包下载路径)

    

    2,短信签名, 短信模板

    

    3,accessKeyId, accessKeySecret

    

编码开始

  项目结构如下:

  

   

package com.st;

import java.util.Random;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

public class SendSmsCode {

    //产品名称:云通信短信API产品,开发者无需替换
    static final String product = "Dysmsapi";
    //产品域名,开发者无需替换
    static final String domain = "dysmsapi.aliyuncs.com";

    // TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
    static final String accessKeyId = "yourAccessKeyId";
    static final String accessKeySecret = "yourAccessKeySecret";

    public static SendSmsResponse sendSms(String phone, String code) throws ClientException {

        //可自助调整超时时间
        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
        System.setProperty("sun.net.client.defaultReadTimeout", "10000");

        //初始化acsClient,暂不支持region化
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
        IAcsClient acsClient = new DefaultAcsClient(profile);

        //组装请求对象-具体描述见控制台-文档部分内容
        SendSmsRequest request = new SendSmsRequest();
        //必填:待发送手机号
        request.setPhoneNumbers(phone);
        //必填:短信签名-可在短信控制台中找到
        request.setSignName("自定义短信签名");
        //必填:短信模板-可在短信控制台中找到
        request.setTemplateCode("SMS_100000000");
        //可选:模板中的变量替换JSON串,如模板内容为"您的验证码为${code}"...时,此处的值为
        request.setTemplateParam("{\"code\":\""+code+"\"}");

        //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
        //request.setSmsUpExtendCode("90997");

        //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
        request.setOutId("yourOutId");

        //hint 此处可能会抛出异常,注意catch
        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);

        return sendSmsResponse;
    }

    public static synchronized String genUniqueKey(){
        Random random = new Random();
        Integer number = random.nextInt(9000) + 1000;
        return String.valueOf(number);
    }

    public static void main(String[] args) {
        try {
            String code = KeyUtil.genUniqueKey();
            SendSmsCode.sendSms("待发送短信的手机号", code);
            System.out.println("发送短信验证码成功:"+code);
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }

}

开发需要的jar包下载链接:https://files.cnblogs.com/files/QW-lzm/aliyun.rar(自行下载)

原文地址:https://www.cnblogs.com/QW-lzm/p/8848945.html

时间: 2024-10-12 02:45:07

阿里云短信服务发送短信验证码(JAVA开发此功能)的相关文章

使用阿里云短信服务发送短信验证码

阿里云短发服务使用流程: 1.在阿里云上完成短信服务的购买. 2.导入相关的jar包. <!-- 阿里云短信服务 --> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.1.0</version> </dependency> <!-- 阿里云短

使用阿里云的短信服务发送短信

在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发送短息,因此都是基于HTTP协议做的一个数据发送而已,接触阿里云的短信服务器后,发现阿里云还增加了非常多的参数,其中包括一些秘钥和签名的内容.短信发送由于比较敏感原因,大多数应用场景是验证码或者一些固定的信息提醒,因此厂商都要求客户按预定的模板来发送,这样限制了短信的应用场景,只能根据业务进行消息定制了.本篇随笔主要介绍阿里云的短信服务

zabbix利用阿里云短信服务添加短信报警

注册阿里云,在短信服务里申请短信签名 签名名称会在脚本中用到. 申请短信模板 模板CODE会在脚本中用到,模板内容要添加参数,即zabbix传来的报警内容. 创建AccessKey 使用阿里云api需要访问秘钥,在访问控制页面-->用户管理-->新建用户 第一次生成AccessKey时会给你密码,AccessKey ID和密码脚本里会用到. 编写报警脚本 # vim /usr/lib/zabbix/alertscripts/sendSMS.py #!/usr/bin/env python2 #

java 短信猫发送短信的方法

用java实现短信收发的功能,目前一般项目中短信群发功能的实现方法大致有下面三种: ·                 1. 向运行商申请短信网关,不需要额外的设备,利用运行商提供的API调用程序发送短信,适用于大型的通信公司. ·                 2. 借助像GSM MODEM之类的设备(支持AT指令的手机也行),通过数据线连接电脑来发送短信,这种方法比较适用于小公司及个人.要实现这种方式必须理解串口通信.AT指令.短信编码.解码. ·                 3. 借

移动MAS短信平台发送短信

MAS短信平台发送短信分为两种方式 参考文档下载 一.sdk调用 using mas.ecloud.sdkclient; using System; namespace 短信发送 { class Program { private static Client client = Client.instance; static void Main(string[] args) { string url = "";//身份认证地址,向客户经理获取. string apId = "&

java实现短信猫发送短信

原文:java实现短信猫发送短信 源代码下载地址:http://www.zuidaima.com/share/1550463672552448.htm 源码截图:

调用阿里云api获取阿里云数据同步服务(DTS)并且作图发送邮件的整个流程

前言 在https://rorschachchan.github.io/2018/02/24/阿里云获取DTS服务延迟的脚本/ 文章里已经写过,领导现在要求"每天查看阿里云dts同步的延迟情况和同步速率情况",并且在https://rorschachchan.github.io/2018/02/27/使用matplotlib画图的一个脚本/ 里面也放了一个使用python matplotlib画图的demo,这篇文章的目的就是把整个过程实现,并且把dts图形以每日邮件的形式发送给领导的

.Net Core in Docker - 使用阿里云Codepipeline及阿里云容器镜像服务实现持续集成(CI)

前面已经介绍过了 .Net Core 程序发布到 Docker 容器的内容.但是每次通过 SSH 链接到服务器敲命令,运行脚本也是挺麻烦的一件事.程序员是最懒的,能让电脑解决的问题绝不手动解决,如果当我们push一次代码后自动build代码,自动跑单元测试,如果测试通过,自动发布程序,如果失败就发邮件通知管理员,这样的话该多美好.为了达成这个目标于是持续集成(CI)持续交付/部署(CD)就被发明出来了.CICD领域有个大名鼎鼎的工具:Jenkins,但是这次不使用它.如果你使用阿里云的话,阿里云

开个坑, 写个阿里云开放储存服务(OSS)的C++版SDK以及客户端

这应该是继我研究手册QQ协议后的第2个稍微正式一点的网络程序, 不只是Scoket套接字编程, 还涉及到更多的HTTP协议知识! 阿里云开放储存服务OSS官方已经提供了不少SDK, 包括PHP/Python/Java/C#, ... 但唯独没有C/C++的, 很可惜. 不过, 论坛上倒是收集了不少C/C++版本的SDK. 但我还是想自己写一个试试, 于是就有了这个坑!!! 这个坑, 不是今天开的, 具体时间应该回到6号(今天10号), 不过我都不敢相信, 排除第3方代码, 已经有80多KB了啊!