Laravel 短信发送组件 - easy-sms

1. 注册云片

短信服务商:
云片官网

2. 安装 easy-sms

easy-sms 是安正超写的一个短信发送组件,利用这个组件,我们可以快速的实现短信发送功能。

$ composer require "overtrue/easy-sms"

由于该组件还没有 Laravel 的 ServiceProvider,为了方便使用,我们可以自己封装一下。\
首先在 config 目录中增加 easysms.php 文件,

$ touch config/easysms.php

填入如下内容。\
config/easysms.php

<?php
return [
    // HTTP 请求的超时时间(秒)
    'timeout' => 5.0,

    // 默认发送配置
    'default' => [
        // 网关调用策略,默认:顺序调用
        'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,

        // 默认可用的发送网关
        'gateways' => [
            'yunpian',
        ],
    ],
    // 可用的网关配置
    'gateways' => [
        'errorlog' => [
            'file' => '/tmp/easy-sms.log',
        ],
        'yunpian' => [
            'api_key' => env('YUNPIAN_API_KEY'),
        ],
    ],
];

然后创建一个 ServiceProvider

$ php artisan make:provider EasySmsServiceProvider

修改文件

app/providers/EasySmsServiceProvider.php

<?php

namespace App\Providers;

use Overtrue\EasySms\EasySms;
use Illuminate\Support\ServiceProvider;

class EasySmsServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(EasySms::class, function ($app) {
            return new EasySms(config('easysms'));
        });

        $this->app->alias(EasySms::class, 'easysms');
    }
}

最后 打开 config/app.php 在 providers 中增加 App\Providers\EasySmsServiceProvider::class,

.
.
.
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,

App\Providers\EasySmsServiceProvider::class,
.
.
.

.env 中配置 YUNPIAN_API_KEY,注意下面需要替换为你自己的 key:

.
.
.
# 云片
YUNPIAN_API_KEY=9c60bdd**********

.env.example 中也加入配置示例,提交到版本库,方便以后部署

# 云片
YUNPIAN_API_KEY=

3. 调试短信

我们使用 artisan 调试一下,试试能否收到短信。\
打开 tinker

$ php artisan tinker

输入如下代码,注意将 13700000000 替换为你自己的手机。

$sms = app('easysms');
try {
    $sms->send(13700000000, [
        'content'  => '【learnku】您的验证码是1234。如非本人操作,请忽略本短信',
    ]);
} catch (\Overtrue\EasySms\Exceptions\NoGatewayAvailableException $exception) {
    $message = $exception->getException('yunpian')->getMessage();
    dd($message);
}

相信你的手机上已经收到验证码了。

站长可见改变

讨论数量: 0

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!