博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
调用阿里云短信服务
阅读量:5369 次
发布时间:2019-06-15

本文共 6681 字,大约阅读时间需要 22 分钟。

package com.example.demo.untils;/** * Created by JQY on 2019/5/15 */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;import java.util.Random;/** * 阿里云短信服务: * 注意:需要 签名名称、模版CODE 以及 RAM访问控制中的 AccessKeyID 和 AccessKeySecret  * 接入阿里云短信服务: * 1。注册并实名认证(企业认证)(绑定企业支付宝) * 2.开通短信服务 * 3.获取AccessKey * 4.设置短信内容(签名和模板) * 5.发送短信  */public class AliyunSmsUtils {    //产品名称:云通信短信API产品,开发者无需替换    static final String product = "Dysmsapi";    //产品域名,开发者无需替换    static final String domain = "dysmsapi.aliyuncs.com";    // TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)    static final String accessKeyId = "";  // TODO 修改成自己的    static final String accessKeySecret = "";   // TODO 修改成自己的    public static SendSmsResponse sendSms(String telephone, 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(telephone);        //必填:短信签名-可在短信控制台中找到        request.setSignName("你的小可爱");    // TODO 修改成自己的        //必填:短信模板-可在短信控制台中找到        request.setTemplateCode("");    // TODO 修改成自己的        //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为//        request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");        request.setTemplateParam("{\"code\":\"" + getNewcode() + "\"}");        //选填-上行短信扩展码(无特殊需求用户请忽略此字段)        //request.setSmsUpExtendCode("90997");        //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者        request.setOutId("yourOutId");        //hint 此处可能会抛出异常,注意catch        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);        if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {            System.out.println("短信发送成功!");        } else {            System.out.println("短信发送失败!");        }        return sendSmsResponse;    }  /*  不删 留着 以后可能有用  public static QuerySendDetailsResponse querySendDetails(String bizId) 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);        //组装请求对象        QuerySendDetailsRequest request = new QuerySendDetailsRequest();        //必填-号码        request.setPhoneNumber("15000000000");        //可选-流水号        request.setBizId(bizId);        //必填-发送日期 支持30天内记录查询,格式yyyyMMdd        SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");        request.setSendDate(ft.format(new Date()));        //必填-页大小        request.setPageSize(10L);        //必填-当前页码从1开始计数        request.setCurrentPage(1L);        //hint 此处可能会抛出异常,注意catch        QuerySendDetailsResponse querySendDetailsResponse = acsClient.getAcsResponse(request);        return querySendDetailsResponse;    }*/    //以下为测试代码,随机生成验证码    private static int newcode;    public static int getNewcode() {        return newcode;    }    public static void setNewcode() {        int n = 4;        StringBuilder code = new StringBuilder();        Random ran = new Random();        for (int i = 0; i < n; i++) {            code.append(Integer.valueOf(ran.nextInt(10)).toString());        }        newcode = Integer.parseInt(code.toString());        //每次调用生成一位四位数的随机数    }    public static void main(String[] args) throws ClientException, InterruptedException {        setNewcode();        String code = Integer.toString(getNewcode());        System.out.println("发送的验证码为:" + code);        //发短信        SendSmsResponse response = sendSms("18888888888", code); // TODO 填写你需要测试的手机号码        System.out.println("短信接口返回的数据----------------");        System.out.println("Code=" + response.getCode());        System.out.println("Message=" + response.getMessage());        System.out.println("RequestId=" + response.getRequestId());        System.out.println("BizId=" + response.getBizId());       /* 不删 留着 以后可能有用        System.out.println("  ==============================================  ");        Thread.sleep(3000L);        //查明细        if(response.getCode() != null && response.getCode().equals("OK")) {            QuerySendDetailsResponse querySendDetailsResponse = querySendDetails(response.getBizId());            System.out.println("短信明细查询接口返回数据----------------");            System.out.println("Code=" + querySendDetailsResponse.getCode());            System.out.println("Message=" + querySendDetailsResponse.getMessage());            int i = 0;            for(QuerySendDetailsResponse.SmsSendDetailDTO smsSendDetailDTO : querySendDetailsResponse.getSmsSendDetailDTOs())            {                System.out.println("SmsSendDetailDTO["+i+"]:");                System.out.println("Content=" + smsSendDetailDTO.getContent());                System.out.println("ErrCode=" + smsSendDetailDTO.getErrCode());                System.out.println("OutId=" + smsSendDetailDTO.getOutId());                System.out.println("PhoneNum=" + smsSendDetailDTO.getPhoneNum());                System.out.println("ReceiveDate=" + smsSendDetailDTO.getReceiveDate());                System.out.println("SendDate=" + smsSendDetailDTO.getSendDate());                System.out.println("SendStatus=" + smsSendDetailDTO.getSendStatus());                System.out.println("Template=" + smsSendDetailDTO.getTemplateCode());            }            System.out.println("TotalCount=" + querySendDetailsResponse.getTotalCount());            System.out.println("RequestId=" + querySendDetailsResponse.getRequestId());        }*/    }}

 

所需要的依赖

-
com.aliyun
aliyun-java-sdk-core
4.0.6
-
com.aliyun
aliyun-java-sdk-dysmsapi
1.1.0

 

转载于:https://www.cnblogs.com/juquanyu-com/p/10882011.html

你可能感兴趣的文章
博客维护停止,需要的伙伴们移步http://blog.csdn.net/panhouye
查看>>
org.springframework.beans.factory.BeanDefinitionStoreException错误
查看>>
git分支
查看>>
Yii框架的增删改查总结分析
查看>>
django基础篇04-自定义simple_tag和fitler
查看>>
django入门篇之( web应用)
查看>>
【UOJ 520】棋盘
查看>>
sqldependency 支持的select
查看>>
<yii 框架学习> yii 框架改为中文提示
查看>>
创建型—单例模式
查看>>
Go --- GC优化经验
查看>>
用五种不同的布局方式实现“左右300px中间自适应”的效果
查看>>
c#学习之前言
查看>>
数据库扩展表设计过程记录
查看>>
PHP 获取中国时间,即上海时区时间
查看>>
HDU 4417 - Super Mario
查看>>
理解WebKit和Chromium: HTML解析和DOM
查看>>
我的四轴专用PID参数整定方法及原理---超长文慎入(转)
查看>>
第十三章 人机猜拳事例
查看>>
IOS-datePicker的简单使用
查看>>