Giter Site home page Giter Site logo

dromara / sms4j Goto Github PK

View Code? Open in Web Editor NEW
776.0 13.0 98.0 6.28 MB

让简单的事情回归简单的本质。 SMS4J为短信聚合框架,帮您轻松集成多家短信服务,解决接入多个短信SDK的繁琐流程。 目前已接入数家常见的短信服务商,后续将会继续集成。后续的版本中我们还将推出更多的相关功能 你的 ⭐️ ⭐️⭐️Star⭐️⭐️ ⭐️,是我的动力!如果你觉得还不错,请点上一颗小星星

Home Page: https://sms4j.com

License: Apache License 2.0

Java 100.00%
java sms springboot solon

sms4j's Introduction

sms4j v3.2.1

sms4j -- 让发送短信变的更简单

前言

在日常的开发过程中,短信的发送经常使用(尤其是中小型的外包公司),毕竟不是每个公司都有阿里腾讯一样的实力, 也不是每个都像银行联通等公司一样有内部的短信规程。第三方的短信往往是最常见的解决方案,但是市面上第三方短信服务商众多, 各家都有不同的方式和标准,每次需要使用时候,都需要花费时间去阅读文档和编写相应的工具,为一个短信浪费了太多的精力和时间。 这个工具的目的就是为了统一下各个厂商的短信发送工具的标准,甚至于更换短信厂商只需要更改yml配置文件即可。
如果我们的项目对你产生了帮助,或者你觉得还算值得鼓励,请用你发财的小手帮助点上一个start
gitee github

支持厂商一览

在SpringBoot环境集成

  1. maven引入

    <dependency>
     <groupId>org.dromara.sms4j</groupId>
     <artifactId>sms4j-spring-boot-starter</artifactId>
     <version>最新版本</version>
    </dependency>
  2. 设置配置文件

    sms:
       config-type: yaml
       blends:
           自定义标识1:
             #阿里云的accessKey
             accessKeyId: 您的accessKey
             #阿里云的accessKeySecret
             accessKeySecret: 您的accessKeySecret
             #短信签名
             signature: 测试签名
             #模板ID 用于发送固定模板短信使用
             templateId: SMS_215125134
             #模板变量 上述模板的变量
             templateName: code
             #请求地址 默认为dysmsapi.aliyuncs.com 如无特殊改变可以不用设置
             requestUrl: dysmsapi.aliyuncs.com
           自定义标识2:
             #华为短信appKey
             appKey: 5N6fvXXXX920HaWhVXXXXXX7fYa
             #华为短信appSecret
             app-secret: Wujt7EYzZTBXXXXXXEhSP6XXXX
             #短信签名
             signature: 华为短信测试
              #通道号
             sender: 8823040504797
             #模板ID 如果使用自定义模板发送方法可不设定
             template-id: acXXXXXXXXc274b2a8263479b954c1ab5
             #华为回调地址,如不需要可不设置或为空
             statusCallBack:
             #华为分配的app请求地址
             url: https://XXXXX.cn-north-4.XXXXXXXX.com:443
           自定义标识3:
             #助通短信
             #助通终端用户管理的用户名 username 必填;非登录账号密码,请登录后台管理地址进行查看:https://mix2.zthysms.com/login
             accessKeyId: tusxxxxxxXXX
             #助通终端用户管理的用户名 passwrod 必填;
             accessKeySecret: UbXXXxxx
             #短信签名,可选;可选的时候,只能使用自定义短信不能使用模板短信; 具体在这里查看审核过的短信签名:https://mix2.zthysms.com/index.html#/SignatureManagement
             signature: 上海千XXXX
  3. 方法使用

@RestController
@RequestMapping("/test/")
public class DemoController {

    // 测试发送固定模板短信
    @RequestMapping("/")
    public void send() {
         //阿里云向此手机号发送短信
        SmsFactory.getSmsBlend("自定义标识1").sendMessage("18888888888","123456");
        //华为短信向此手机号发送短信
        SmsFactory.getSmsBlend("自定义标识2").sendMessage("16666666666","000000");
    }
}

配置详解

线程池配置

每一家厂商都对于异步短信有不同的支持,有些甚至没有,为了统一存在一个异步短信,我们配置了一个线程池用于执行异步短信任务,线程池默认配置如下:

sms:
  #核心线程池大小
  corePoolSize: 10
  #最大线程数
  maxPoolSize: 30
  #队列容量
  queueCapacity: 50
  #活跃时间
  keepAliveSeconds: 60
  # 线程名字前缀
  threadNamePrefix: sms-executor-
  #设置线程池关闭的时候等待所有任务都完成再继续销毁其他的Bean
  shutdownStrategy: true

以上线程池为默认的配置,如果有需要可以跟随自己的需求在yml文件进行配置

参与贡献

1.  Fork 本仓库
2.  新建 Feat_xxx 分支
3.  提交代码
4.  新建 Pull Request 到 dev-3.0.x 分支

贡献原则

  • 我们原则上欢迎任何人为sms4j添加加瓦贡献代码
  • 贡献代码应注释完备,按照javaDoc标准对 类,方法,变量,参数,返回值等信息说明
  • 新增的方法模块不能破坏原有结构和兼容性
  • 如果我们关闭了你的issues或者pr请查看回复内容,我们会在回复中做出解释

分支介绍

  1. master 正式版分支,最终发布到maven**仓库的版本
  2. dev 开发分支,贡献的代码将合并到这里,无误后合并至preview

sms4j's People

Contributors

bddiudiu avatar bleachtred avatar charles7c avatar dazer007 avatar fntop avatar handy-git avatar hi-mr-wind avatar ish1yu avatar itzhai avatar javalionli avatar litairan1995 avatar noear avatar tjxiaobao avatar vampireachao avatar xuanyuanheng avatar yymainy avatar z357904947 avatar zy945 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sms4j's Issues

业务中有多个短信模板如何设置?

看文档里面写短信模板设置的时候,时候只能设置一个模板。但是实际业务中往往不止一个短信模板,通常会有多个模板,比如:1发送短信验证码;2,发送未读消息等通知提醒;3,发送礼品卡券;等等。
只能设置一个的话基本上没啥用。

阿里云短信偶尔提示签名不匹配

{"code":"SignatureDoesNotMatch","message":"Specified signature is not matched with our calculation. server string to sign is:POST&%2F&AccessKeyId%3DLTAI5t6TfVmnXGapKuhbYJxe%26Action%3DSendSms%26Format%3DJSON%26PhoneNumbers%3D17621940266%26RegionId%3Dcn-hangzhou%26SignName%3D%25E6%2588%2590%25E7%25A7%258B%25E7%25A7%2591%25E6%258A%2580%25E7%259F%25AD%25E4%25BF%25A1%25E9%25AA%258C%25E8%25AF%2581%25E7%25A0%2581%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D9554c656-f112-4122-9f3d-9b17b1a8b5b1%26SignatureVersion%3D1.0%26TemplateCode%3DSMS_279970069%26TemplateParam%3D%257B%2522code%2522%253A%2522864070%2522%257D%26Timestamp%3D2023-06-19T12%253A51%253A58Z%26Version%3D2017-05-25"}

配置文件问题

我的阿里云短信同一个账号下有多个模板,但是配置文件中只能读取一个模板,想要配置不同模板却只能编写多个配置,会出现重复配置的问题。能否在调用SmsFactory.getSmsBlend()后自定义set某个模板id,使得能发送不同类型的短信
例如这样:
image

使用者征集

如果你的公司或项目正在使用我们的工具,请在这里留言告诉我们,我们会在征求您的同意后展示在官网。
留言格式:
公司名称--logo 或 logo地址

集成厂商征集

如果你正在使用的厂商我们还没有集成,清下下方留言告诉我们,我们将综合考量筛选后在群投票的形式决定接入的顺序
留言格式

厂商名称:xxxx
官网地址:xxxx

你也可以前往gitee仓库进行回复

咨询一些问题

  1. 厂商名称能否改为英文
  2. 如果配置为数据库方式, 需要另加一个厂商字段 此外前端的值需要与枚举值匹配 同样存在(1)的问题 ,不是特别好
  3. 引用(2), 无法和其他告警插件达到同一结构 ,对于 钉钉,企微,飞书等告警类型其实是不需要这个字段的 , 目前我这边实现钉钉,企微,飞书告警类型 所有参数存储在 params 字段中 存储为json, 另一个字段type 存储告警类型,
  4. 针对短信多了个字段我这边存储在了 params 中, 但是在yml文件中 需要指定 supplier-field-name 此处不能取值于json字段中得某一个key,
  5. 针对2,3,4中的描述 可否将 supplier-field-name 放出来做一个增强的自定义配置,由用户自己配置该字段的取值

对接阿里云短信平台发送短信失败

用官方API可以跑通完成短信发送,但是用了咱们这个SDK后,出现签名错误的问题。
图片
图片
SmsResponse(success=false, data={"RequestId":"1FCC93CD-BA33-5DD7-8181-CFF24A5D6A66","Message":"Specified signature is not matched with our calculation. server string to sign is:POST巴拉巴拉………………","Recommend":"https://api.aliyun.com/troubleshoot?q=SignatureDoesNotMatch&product=Dysmsapi","HostId":"dysmsapi.aliyuncs.com","Code":"SignatureDoesNotMatch"}, configId=ali)
aki和aks是没问题的,原生的方式测试ok。

至github使用者

在这里我们收到了很多的issues和PR,我很感谢大家能够支持我们,不过在这里我想对想参与到我们项目中的人说一下,受限于作者本地网络,github的访问和提交受到极大的限制,不得已将主仓库托管在了gitee,如果您想参与我们的项目,或者修复了什么漏洞,还请您移步至gitee进行PR的提交,提交后,会自动同步至github。

营销短信如何使用

业务中存在营销类短信,模板中不需要配置参数,这种应该如何使用呢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.