前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >短信发送接口 – SubMail

短信发送接口 – SubMail

作者头像
前Thoughtworks-杨焱
发布于 2021-12-08 00:28:18
发布于 2021-12-08 00:28:18
6.8K00
代码可运行
举报
文章被收录于专栏:杨焱的专栏杨焱的专栏
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class SubMailSmsSender {

    private static Logger logger = LoggerFactory.getLogger(SubMailSmsSender.class);
    private String submailSendUrl;
    private String submailAppid;
    private String submailAppkey;

    public SubMailSmsSender(String submailSendUrl, String submailAppid, String submailAppkey) {
        this.submailSendUrl = submailSendUrl;
        this.submailAppid = submailAppid;
        this.submailAppkey = submailAppkey;
    }

    ObjectMapper objectMapper = new ObjectMapper();

    /**
     * SUBMAIL 的短信一对多(即1条API请求发送多个号码,并可以灵活控制每个联系人的文本变量)和群发 API 。调用方需要确保 templateId 正确, smsList 中至少有一条
     *
     * @param templateId 短信模板
     * @param multi      批量发送列表json字符串
     * @return 返回发送成功的接收方手机号列表
     */
    public List<String> multixsend(String templateId, String multi) {
        String info = null;
        boolean success = false;
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("appid", submailAppid));
        params.add(new BasicNameValuePair("project", templateId));
        params.add(new BasicNameValuePair("multi", multi));
        params.add(new BasicNameValuePair("signature", submailAppkey));

        try {
            List<String> successPhoneList = new ArrayList<>();
            HttpResponse post = HttpClientHelper.INSTANCE.post(submailSendUrl, params, "utf-8", null, null);
            info = EntityUtils.toString(post.getEntity(), "utf-8");
            if (logger.isDebugEnabled()) {
                logger.debug("SUBMAIL 返回:" + info);
            }
            JsonNode jsonNode = objectMapper.readTree(info);
            Iterator<JsonNode> iterator = jsonNode.iterator();
            while (iterator.hasNext()) {
                JsonNode next = iterator.next();
                String status = next.get("status").asText();
                String to = next.get("to").asText();
                if ("success".equals(status)) {
                    successPhoneList.add(to);
                    if (logger.isInfoEnabled()) {
                        logger.info("成功发送短信给[" + to + "]");
                    }
                } else {
                    String logContent = "发送短信给[" + to + "]失败";
                    if (logger.isInfoEnabled()) {
                        logger.error(logContent);
                    }
                }
            }
            return successPhoneList;
        } catch (IOException e) {
            logger.error("请求 SubMail 服务器发送短信产生IO 错误", e);
            return Collections.emptyList();
        }
    }

    /**
     * SUBMAIL 的短信一对多(即1条API请求发送多个号码,并可以灵活控制每个联系人的文本变量)和群发 API 。调用方需要确保 templateId 正确, smsList 中至少有一条
     *
     * @param templateId 短信模板
     * @param smsList    批量发送列表
     * @return 返回发送成功的接收方手机号列表
     */
    public List<String> multixsend(String templateId, List<SubMailSms> smsList) {

        if (smsList == null || smsList.isEmpty()) {
            return Collections.emptyList();
        }
        String multi = null;
        try {
            multi = objectMapper.writeValueAsString(smsList);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return this.multixsend(templateId, multi);
    }

    /**
     * 短信发送信息
     */
    static class SubMailSms {
        private String to;
        private Map<String, String> vars;

        public String getTo() {
            return to;
        }

        public void setTo(String to) {
            this.to = to;
        }

        public Map<String, String> getVars() {
            return vars;
        }

        public void setVars(Map<String, String> vars) {
            this.vars = vars;
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用JAVA实现Email和短信验证
在Web项目中Email和短信验证是很普遍的情形,下面我们来介绍如何用Java来实现。
顾翔
2021/07/22
2.4K0
腾讯云短信发送功能API-PHP接入
最近测试了一下短信发送功能,接入了腾讯云的API. 登录腾讯云https://cloud.tencent.com/ 国内短信新购三重礼 直达地址:https://cloud.tencent.com/
用户5907943
2019/07/26
8.8K0
腾讯云短信服务的申请和验证使用详细流程
项目中用到短信验证功能,看到腾讯云有短信服务,就直接使用了,当然其它公司也会停工短信服务,百度可以找到很多,使用的情况应该大同小异,这里就以腾讯云的短信服务为例,说明一下短信服务的申请和使用。
React架构设计
2019/12/26
5K0
android学习笔记----短信发送器
短信发送器demo地址:https://github.com/liuchenyang0515/SmsSend
砖业洋__
2023/05/06
5190
android学习笔记----短信发送器
短信 | 教你使用 JAVA实现 【短信发送】 功能
需求:使用java来实现‘短信发送’功能 发送方:【码神联盟】 接收方:境内手机号 环境:myeclipse、jdk1.8、腾讯云jar包、maven 开发步骤 1:新建maven工程,如下: 2:开
码神联盟
2018/07/30
15K0
短信 | 教你使用 JAVA实现 【短信发送】 功能
180行代码实现全球短信发送功能(无SKD依赖)
本文提供的代码不依赖官方SDK,为方便读者理解,文章中提供的代码片段包含详细的注释。完整功能代码见文末,删减冗余注释和空行后不足180行。
若海
2023/08/12
18K1
SpringBoot 开发案例之接入腾讯云短信
腾讯云短信(Short Message Service,SMS)沉淀腾讯十多年短信服务技术和经验,为 QQ、微信等亿级平台和10万+客户提供快速灵活接入的高质量的国内短信与国际/港澳台短信服务。
小柒2012
2020/11/05
4K1
轻松集成腾讯云短信服务实现短信发送(Java实现)
不论是阿里云还是腾讯云,要想在网站上实现短信发送功能,首先得保证你的网站域名是通过备案的,因为短信签名是需要用到备案过的域名截图,所以域名通过了,申请很快就会审批成功了。 (至于备案的话,需要你先购买域名和服务器,然后提交材料信息,他们那边会打电话跟你核实下基本信息,比如你申请的域名地址,这个网站用途是什么等等,然后初审通过后,等个五六天就行)
呆呆
2021/10/09
6.5K0
三个月写了个短信平台,开源出来!
大家好,我是勇哥。花了三个月的时间,我手写了个短信平台服务 platform-sms,今天开源出来 Beta 版本。
勇哥java实战
2023/11/26
1.4K1
消息中间件—RabbitMQ(集群监控篇1)
摘要:任何没有监控的系统上线,一旦在生产环境发生故障,那么排查和修复问题的及时性将无法得到保证
用户2991389
2018/09/05
1.8K0
消息中间件—RabbitMQ(集群监控篇1)
java实现发短信功能---腾讯云短信
前言 如今发短信功能已经成为互联网公司的标配,本篇文章将一步步实现java发送短信 考察了许多提供短信服务的三方,几乎所有都需要企业认证才可以使用,这对于个人学习非常不方便。多方比较之后,选择了腾讯云(此处并非做广告),原因有两点: 支持微信公众号认证(门槛低) 每月赠送100条免费短信(适合个人学习)(这一点请矿家子弟自行忽略)。超过100条的时候, 可以开通收费短信服务-腾讯云短信服务套餐 [or5qsa3nyy.png] 开发环境 请参照: 基于SpringBoot构建分模块项目 腾讯云 ---短信
聚优云惠
2019/12/26
27K0
基于Tarsnodejs快速实现云短信模块服务
Tars 是将腾讯内部使用的微服务架构TAF(Total Application Framework)多年的实践成果总结而成的开源项目。Nodejs其js的语法对json处理的优势,可以适用于快速实现轻量级接口。
divewang
2019/09/01
3K0
基于Tarsnodejs快速实现云短信模块服务
Apache httpClient+Jackson学习笔记
HTMLUnit可以用来做爬虫的。Jsoup比他跟简洁。使用python语言进行爬虫.开箱即用。
全栈程序员站长
2022/06/30
2.5K0
Apache httpClient+Jackson学习笔记
JeecgBoot 短信验证码接口,如何实现防刷机制?
加签配置很简单,直接将需要控制的接口加到 yml 的参数 jeecg.signUrls 中即可。
JEECG
2024/07/06
2690
JeecgBoot 短信验证码接口,如何实现防刷机制?
rabbitMq实现系统内的短信发送设计&动态获取BEAN
1.短信非系统的重要节点操作,可以在任务完成之后,比如下单成功,发送下单成功的mq消息,短信服务接收到mq消息, 动态的判断该短信的code,通过全局公共的父类(调用中台等接口获取全部所有需要的对象参数),获取短信中的{mobile}等参数来替换短信模板中的可变量。 这样系统中的所有的发送短信,都可以继承该父类,获取参数,从而实现方便快捷的扩展短信接入和对原来的短信模板内容的修改或新增短信中的可变量。
oktokeep
2024/10/09
1540
rabbitMq实现系统内的短信发送设计&动态获取BEAN
qcloudsms_py短信发送和easyquotation股票实时数据获取
有时候我们做股票投资,需要实时盯盘。而盯盘的任务我们完全可以交给计算机,因此当信号出现的时候知会自个是很有必要的,但是前提是获取实时数据并判断是否发送短信提醒,这块作者在网上找了一写资料,算是留个记录,方便日后用到。
写一点笔记
2022/08/11
1.2K0
qcloudsms_py短信发送和easyquotation股票实时数据获取
聊聊如何在Java应用中发送短信
很多业务场景里,我们都需要发送短信,比如登陆验证码、告警、营销通知、节日祝福等等。
勇哥java实战
2023/11/07
7790
SpringBoot开发常见技术整合【学习笔记整理】
@RestController = @Controller + @ResponseBody
全栈程序员站长
2021/07/14
1.1K0
Java 调用腾讯云 API 发送短信验证码工具类
目前短信验证码应用场景就太多了,比如 : 用户注册、登录验证、找回密码、支付认证等,我们基本上都是通过第三方的短信服务完成对用户的验证,当然国内比较出名的就是阿里云 and 腾讯云,阿里云短信通讯是原名叫‘大于’,腾讯云没怎么了解过,阿里云的SDK和API官网都有,所以这里演示腾讯云,因为个人认证每个月有100条免费哦呢!!
Lcry
2022/11/29
6.2K0
Java 调用腾讯云 API 发送短信验证码工具类
短信验证码登录你会吗?
今日主题:短信验证码登录 简介 相信大家在很多网站进行登录的时候,都见过短信验证码登录吧,那现在就来看看怎么实现吧 原理说明 首先我们需要一个短信发送接口,前端发送手机号码到后端,后端随机生成一个验证
java后端指南
2021/05/13
1.7K0
短信验证码登录你会吗?
推荐阅读
相关推荐
用JAVA实现Email和短信验证
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验