又一个轮子:一款满足你的多种发送需求的短信发送组件: overtrue/easy-sms
其实这个轮子已经做好 3 个月了,陆续做了一些修改,另外一些朋友也在试用与测试,所以经过这 3 个月来的打磨,应该是时候放出来坑更多的小朋友了,哈哈,开个玩笑。
先讲讲缘由咯:
- 我们通常会在一个应用使用多家的短信发送服务以保证服务可用性。
- 接入多家服务的时候需要写多份代码,维护成本高。
- 针对各家服务商的调用方式不同,发送消息写法不统一。
- 增减服务商成本较大,代码改动量大。
当然了,对于编码质量高的同学来讲,上面的这些问题都不算大事,但是重复的折腾就会比较厌烦了,所以呢,我就开了这个坑。
https://github.com/overtrue/easy-sms
特点:
- 支持目前市面多家服务商:云片、Submail、螺丝帽、阿里大于、容联云通讯、互亿无线、聚合数据、SendCloud
- 一套写法兼容所有平台
- 简单配置即可灵活增减服务商
- 支持多种服务商选择策略
- 统一的返回值格式,便于日志与监控
- 自动轮询选择可用的服务商
- 更多等你去发现与改进...
你需要做的就是先打开上面的链接,点击右上角区域的 star, 然后看文档,喜欢就装上玩。有问题随时找我咯。:kiss:
本帖已被设为精华帖!
本帖由 Summer
于 7年前 加精
已试用一段时间了,好评 :+1:
好坑好坑
站个坑
棒棒棒,刚需!
:kissing_heart:
好像不支持阿里云啊
@fnf1993 阿里大于 不是?
@overtrue 我以前也以为是一样的,后来发现阿里云的消息服务,和阿里大于是两个东西= =
@fnf1993 OK, 我改天集成进来,当然也欢迎 PR.
@overtrue 感谢~
感谢超哥
用了超哥的轮子,腰不酸腿不疼,一口气能上20楼了。
超哥的轮子好啊,超哥的轮子棒,超哥的轮子呱呱叫。
@maxincai 哈哈哈哈
已经在用了
@iwzh 666
@Rekkles 哈哈,不要这样,小心论坛被关掉哦
如果能配合 laravel notification 就更佳了 :+1:
@Rekkles 已删,别这样,我会坐牢的
@Summer
@overtrue
?站长真是辛苦
手动点赞
@Rekkles 没办法
大爱啊?
用了超哥的easywechat,确实很好用,有机会试试这个,感谢超哥!!!
:+1: 好用
超哥威武,超哥霸气~~
百度云短信已经提交PR了
厉害了我的轮子哥! 点赞
支持一波
高产奶牛,超哥出品,直接上线。
@springjk 打你哦
@springjk 哈哈哈,Summer 是母猪,安哥是奶牛!
@JokerLinly :laughing:
厉害了我的哥
支持
这种源码读起来是一种很开心的体验!
评论得拉到最后才精彩= =,奶牛超哥,用你的easywechat确实少踩不少坑。是成为造轮子的人还是开轮子的人好呢:poop:
@Stephen 开轮子是什么意思?
@Stephen 是说我坑了你?
@overtrue 没有啊,少踩很多坑这句话不够清楚么= =
@Stephen 好吧,看错了,我看成是 “踩了不少坑” 哈哈,sorry.
@overtrue 眼泪水掉下来
@Stephen :kiss:
:revolving_hearts:
支持轮子哥!
@aqyuyang :smile:
@overtrue :kissing_closed_eyes:
会封装Laravel的ServiceProvider吗
@墨风 嗯,也不是不行哈,过两天,最近忙成狗
@overtrue 期待支持阿里云的短信,,,公司用的阿里云的,,正准备问阿里云和阿里大于是不是一个东西呢~~
@largezhou 阿里云消息那个好复杂啊。。。所以现在抽不出时间来搞它,如果你们已经用上了,可以考虑贡献 PR
mark一下
https://github.com/overtrue/easy-sms/blob/...
如果Gateway是用注册式的就好了。比如自建的平台如果想写一个Gateway的话,还得class_alias到Overtrue\EasySms\Gateways命名空间下,有点hack了。
@reatang guys, 请认真阅读 readme. 不然我要用小拳拳锤你胸口哦!
@overtrue 傲娇
@overtrue 看到了 extend()//吓了我个蹦
@茄子 哈哈
@reatang :laughing:
好轮子 ?
超哥我composer安装一直报这个错误 , 我的php是7.0 系统centos
@DanceSmile 这明明是你 PHP 基础语法的问题吧,在根命名空间 use DB; 的原因:
@overtrue 多谢指点,一句话点破了 好了,谢谢超哥
@overtrue 刚才google的好久, 一直因为是不能用use DB, 我就把文件里的的use DB 删掉了好多,
看到你说的 根命名空间 才恍然大悟
@overtrue
![Uploading file...]()
code应该是字符串,数字会报错
code应该是字符串,数字会报错
@就好比 不同商家要求不一样,根据自己情况调整内容
@overtrue 原来是这个样子 我用的阿里大鱼 受教了= =
正想看看这一方面的东西
原来是这个样子 我用的阿里大鱼 受教了=
大神诞生很多好作品啊
错误信息的返回格式问题
在这里的errorLog记录是所有的请求以及响应的日志么?如果服务商报错了,那么排查错误的话是不是通过这个文件实现?
比如使用的服务商欠费了(我使用的是laradock开发环境,查询了workspace、nginx、php-fpm容器无法查到生成的这个日志
文件,所以来问问大神)。
因为我看到只要是错误,返回的错误全这样的,这个无法排查问题啊。
@努力做个技术男 麻烦读完 README,谢谢:
https://github.com/overtrue/easy-sms#返回值
https://github.com/overtrue/easy-sms/blob/...
@overtrue 是的,在使用的时我看到了。返回值在成功的情况下是没有问题。返回值如下:
But 当我尝试把手机号调整为12位,它是在
$easySms->send()
执行之中就抛出了这个异常,也就是说没等到我判断$result
时,它就已经抛出了一个异常响应。本人使用dingoAPI、laravel5.4,短信服务商是阿里大于(仅此一个)。
@overtrue
@overtrue 抱歉,没看仔细,异常中包装了
$results
,我需要再看看如何从异常中获取$results
,因为在我的laravel log 日志中没有出现$results
的信息。@努力做个技术男
@overtrue
非常感谢,本人目前只使用的一个短信服务商阿里大鱼,所以解决方式也只针对于阿里大鱼。
通过对
$easySms->send
封装一层try catch
,通过对异常的捕获避免直接响应给请求,然后通过对异常$results
的读取、处理,然后根据逻辑处理即可。如图所示:使用创蓝(253)短信时,报NoGatewayAvailableException错误
抱歉了,因为公司用的是创蓝短信的老接口,跟这个轮子里的接口参数不一样,所以才报上面的错误。
@overtrue 不支持阿里云语音?
@overtrue 大神你好,请问这是因为什么刚下的扩展
@xihanshui 请正确配置您的 SSL 根证书
@overtrue 谢谢大神,我把Guzzel的ssl 证书认证选项给关了, 另外还有一个如果不是在
laravel
框架中使用,选择腾讯云SMS服务的,可能会遇到这个错误因为
str_random()
不是php的内置函数 我给改成了rand(100000, 999999)
就可以了。@xihanshui 好的,确实是 Bug, 稍后修复,多谢!
学习源码中
不知道怎么兼容手机号是否带地区码
@overtrue 大神,我的是TP5,在获取异常的时候一直提示错误
@phper_dong
大神好,阿里云短信是发送成功了,但是每天发送第一次不对,再试一次后就可以了。每天都是这样
而且有时候发送不成功 返回值也是空的
我找到问题了,有些时候发不成功 提示All the gateways have failed. You can get error details by
$exception->getExceptions()
, 但有时却成功了不知道华为云能不能兼容
现在不支持阿里大于了?
@pikalu 官方都放弃了
大汉三通 需要自己集成进去吗?
超哥,能集成 天瑞云的吗?http://cms.tinree.com/static/index.html#/l...
非常谢谢!
老师,你好,我是您的扩展包课程的读者,我在参考github easy-sms 项目的源码,试着自己造轮子。我有一个疑问:阿里云短信服务提供了开发sdk ,如
alibabacloud/client": "^1.5
, 为什么在easy-sms
项目中不使用, 而是自己封装代码? 基于什么样的考虑?我在造轮子的时候,该如何选择?@matteao 因为发短信就只是一个简单的 API 调用,如果用它的 SDK,要写的代码并没有减少,所以用不用其实差别不大。
非常棒!打算改用你这个,希望作者可以吸取一下隔壁的一些功能github.com/toplan/laravel-sms#4-%E...
手机号验证、动态验证、debug不会发送短信可以通过接口获取短信验证码