安装扩展包
使用 Composer 包管理工具进行安装,在项目根目录执行如下命令:
composer require "overtrue/easy-sms"
配置
在 config
目录中创建配置文件 sms.php
:
touch config/sms.php
写入以下内容(由于本人有云片和腾讯云两个短信平台的账户,所以在下方的发送网关中配置了两个短信提供商的简称,该扩展可支持更多的短信平台,请查看: easy-sms:
<?php
return [
// HTTP 请求的超时时间(秒)
'timeout' => 5.0,
// 默认发送配置
'default' => [
// 网关调用策略,默认:顺序调用
'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
// 默认可用的发送网关
'gateways' => [
//云片
'yunpian',
//腾讯云
'qcloud'
],
],
// 可用的网关配置
'gateways' => [
'errorlog' => [
'file' => '/tmp/easy-sms.log',
],
'yunpian' => [
'api_key' => '云片短信平台账户api_key',
],
'qcloud' => [
'sdk_app_id' => '腾讯云短信平台sdk_app_id',
'app_key' => '腾讯云短信平台app_key',
'sign_name' => '腾讯云短信平太签名' (此处可设置为空,默认签名)
],
],
];
在项目根目录执行命令创建服务提供者:
php artisan make:provider SmsServiceProvider
执行上述命令会在 app/Providers
目录下生成对应的代码文件。
修改 SmsServiceProvider 中的内容:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Overtrue\EasySms\EasySms;
class SmsServiceProvider extends ServiceProvider
{
public function boot()
{
}
public function register()
{
$this->app->singleton(EasySms::class, function ($app) {
return new EasySms(config('sms'));
});
$this->app->alias(EasySms::class, 'sms');
}
}
然后注册该服务提供者,在 config/app.php
中写入:
'providers' => [
...
...
...
\App\Providers\SmsServiceProvider::class
],
使用
为了方便在多处使用发送短信的功能,本人在 App 目录下建立了 Service
目录用来存放可提供公共服务的代码,然后创建 SmsService.php
文件,内容如下:
<?php
use Illuminate\Support\Facades\Log;
use Overtrue\EasySms\Exceptions\NoGatewayAvailableException;
class SmsService extends Service
{
public static function sendVerifyCode($phone)
{
$sms = app('sms');
try {
$sms->send($phone, [
//content针对云片平台发送的短信内容
'content' => '您的验证码是'. self::verifyCode() .'。如非本人操作,请忽略 本短信',
//下面两个参数针对腾讯云平台发送短信的参数
'template' => '腾讯云短信平台短信模板id',
'data' => [
//关联短信模板的参数
'1' => self::verifyCode(),
'2' => 1
],
],
//指定使用哪个网关进行发送
['qcloud']
);
} catch (NoGatewayAvailableException $exception) {
//发送失败,记录错误日志
Log::error('短信发送失败', ['phone' => $phone, 'message' => $exception- >getException('qclond')->getMessage()]);
}
}
public static function verifyCode()
{
return mt_rand(100000, 999999);
}
}
发送短信,调用 sendVerifyCode('phone_number') 方法发送短信,记得传入对应的手机号码!
use App\Service\SmsService;
SmsService::sendVerifyCode('176****6177');
End!
文章同步发布在我的个人博客中,传送门Hesunfly Blog
网友评论