PHPackages                             telanflow/laravel-sms - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. telanflow/laravel-sms

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

telanflow/laravel-sms
=====================

telanflow laravel sms base overtrue's easy-sms

v2.0.1(4y ago)040MITPHPPHP ^8.0 | ^8.1

Since Jan 2Pushed 4y agoCompare

[ Source](https://github.com/telanflow/laravel-sms)[ Packagist](https://packagist.org/packages/telanflow/laravel-sms)[ RSS](/packages/telanflow-laravel-sms/feed)WikiDiscussions master Synced today

READMEChangelog (2)Dependencies (5)Versions (18)Used By (0)

Laravel Sms
===========

[](#laravel-sms)

Laravel 贴合实际需求同时满足多种通道的短信发送组件

[![Build Status](https://camo.githubusercontent.com/292449be463e1425b6c0e5907a943b0c592f857482e30416ce373e62e6a9d823/68747470733a2f2f7472617669732d63692e6f72672f74656c616e666c6f772f6c61726176656c2d736d732e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/telanflow/laravel-sms)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/548bb040552647c5ccbe5053b5bc6fdb1c784511a01408fb3c650fbc6487dd32/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f74656c616e666c6f772f6c61726176656c2d736d732f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/telanflow/laravel-sms/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/2d98a9d523f82edba10db58f70ee7b4d80c9cb66402528016b7284970d903677/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f74656c616e666c6f772f6c61726176656c2d736d732f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/telanflow/laravel-sms/?branch=master)[![Build Status](https://camo.githubusercontent.com/64b67a6204ff50b34bbc329259cb1b8ff8c1d5ac0ac7e561414db655dfffb4ed/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f74656c616e666c6f772f6c61726176656c2d736d732f6261646765732f6275696c642e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/telanflow/laravel-sms/build-status/master)[![Latest Stable Version](https://camo.githubusercontent.com/6116f2f6cd7f067ed3678f4d0cfa74631838f6202e4b5819a794263fc00d7075/68747470733a2f2f706f7365722e707567782e6f72672f696272616e642f6c61726176656c2d736d732f762f737461626c65)](https://packagist.org/packages/ibrand/laravel-sms)[![Latest Unstable Version](https://camo.githubusercontent.com/0924c04ac295a243af0b47873b6d70d8fb104fe840658dfc93c854660cff5b6a/68747470733a2f2f706f7365722e707567782e6f72672f696272616e642f6c61726176656c2d736d732f762f756e737461626c65)](https://packagist.org/packages/ibrand/laravel-sms)[![License](https://camo.githubusercontent.com/f0b2b8871f82ab1079d4308389389cb6ba1e10652266b9b86488a50f157aab0a/68747470733a2f2f706f7365722e707567782e6f72672f74656c616e666c6f772f6c61726176656c2d736d732f6c6963656e7365)](https://packagist.org/packages/telanflow/laravel-sms)

Featrue
-------

[](#featrue)

基于业务需求在 [overtrue/easy-sms](https://github.com/overtrue/easy-sms/) 基础进行扩展开发，主要实现如下目标：

1. 支持短信验证码直接在 config 中配置模板ID
2. 支持短信验证码自定义长度
3. 支持短信验证码有效分钟，默认5分钟
4. 支持短信验证码重试次数，防止用户意外输错验证码导致需要再次发送验证码的问题。
5. 支持短信验证码未验证时，用户再次请求验证码，在有效分钟内验证码保持一致。
6. 集成短信发送路由，支持 web 和 api 发送方式。
7. 支持验证码调试，debug 模式下可直接查询手机号目前有效的验证码
8. 支持短信验证码发送记录保存到数据库
9. 短信发送频率限制，同一 IP 限定时间内请求次数

TODO：
-----

[](#todo)

1. 支持语音验证码

安装
--

[](#安装)

```
composer require telanflow/laravel-sms
```

低于 Laravel5.5 版本

`config/app.php` 文件中 'providers' 添加

```
Telanflow\Sms\ServiceProvider::class
```

`config/app.php` 文件中 'aliases' 添加

```
'Sms'=> Telanflow\Sms\Facade::class
```

发布配置文件

```
php artisan vendor:publish --provider="Telanflow\Sms\ServiceProvider"
```

使用
--

[](#使用)

### 发送验证码

[](#发送验证码)

1. 实现了发送短信验证码路由，支持 web 和 api ，可以自定义路由的 prefix。

```
'route' => [
        'prefix' => 'sms',
        'middleware' => ['web'],
    ],

or

'route' => [
        'prefix' => 'sms',
        'middleware' => ['api'],
    ],

```

POST请求 `http://your.domain/sms/verify-code`

参数：mobile

备注：为了开发调试方便，在 debug 模式下不会验证手机的有效性。

返回参数：

```
{
    "status": true,
    "message": "短信发送成功"
}
```

2. 如果需要自定义路由，也可以通过使用Facade发送验证码：

```
use Telanflow\Sms\Facade as Sms;

Sms::send(request('mobile'));
```

由于使用多网关发送，所以一条短信要支持多平台发送，每家的发送方式不一样，但是我们抽象定义了以下公用属性：

- `content` 文字内容，使用在像云片类似的以文字内容发送的平台
- `template` 模板 ID，使用在以模板ID来发送短信的平台
- `data` 模板变量，使用在以模板ID来发送短信的平台

```
use Telanflow\Sms\Facade as Sms;

Sms::send(request('mobile'), [
    'content'  => '您的验证码为: 83115',
    'template' => 'SMS_001',
    'data' => [
        'code' => 83115
    ],
]);
```

默认使用 `default` 中的设置来发送，如果某一条短信你想要覆盖默认的设置。在 `send` 方法中使用第三个参数即可：

```
use Telanflow\Sms\Facade as Sms;

Sms::send((request('mobile'), [
    'content'  => '您的验证码为: 83115',
    'template' => 'SMS_001',
    'data' => [
        'code' => 83115
    ],
], ['aliyun']); // 这里的网关配置将会覆盖全局默认
```

### 定义短信

[](#定义短信)

已**容联云通讯**为例：你可以根据发送场景的不同，定义不同的短信类，通过继承 `Overtrue\EasySms\Message` 来定义短信模型：

```
