Laravel 使用 EasySms 发送阿里云短信报错:All the gateways have failed.
感谢关注这个问题~
我已经排除了签名、模板、accesskey以及阿里云格式的不对,阿里云的“发送量统计”与“发送记录查询”也没有看到任何记录。
config/easysms.php配置文件:
<?php
return [
// HTTP 请求的超时时间(秒)
'timeout' => 5.0,
// 默认发送配置
'default' => [
// 网关调用策略,默认:顺序调用
'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
// 默认可用的发送网关
'gateways' => [
'aliyun'
],
],
// 可用的网关配置
'gateways' => [
'errorlog' => [
'file' => '/tmp/easy-sms.log',
],
'aliyun' => [
'access_key_id' => env('ALIYUN_ACCESSKEY_ID'),
'access_key_secret' => env('ALIYUN_ACCESSKEY_SECRET'),
'sign_name' => env('ALIYUN_SMS_SIGN_NAME'),
]
],
];
EasySms注册器:
<?php
namespace App\Providers;
use Overtrue\EasySms\EasySms;
use Illuminate\Support\ServiceProvider;
class EasySmsServiceProvider extends ServiceProvider
{
public function register()
{
//
}
public function boot()
{
$this->app->singleton(EasySms::class, function ($app) {
return new EasySms(config('easysms'));
});
$this->app->alias(EasySms::class, 'easysms');
}
}
config/app.php文件的provider中添加:
App\Providers\EasySmsServiceProvider::class
.env文件:
ALIYUN_ACCESSKEY_ID=************************
ALIYUN_ACCESSKEY_SECRET=****************************
ALIYUN_SMS_SIGN_NAME=博客
控制器:
<?php
namespace App\Http\Controllers;
use Overtrue\EasySms\EasySms;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class SmsController extends Controller
{
public function send(Request $request,EasySms $easySms){
$phone = '182********';
$code = 123456;
try {
$result = $easySms->send($phone, [
'template' => 'SMS_********',
'data' => [
'code' => $code,
],
]);
echo $result;
} catch (\GuzzleHttp\Exception\ClientException $exception) {
$response = $exception->getResponse();
$result = json_decode($response->getBody()->getContents(), true);
}
}
}
报错如下:
根据图中报错信息操作。
/tmp/easy-sms.log
文件的内容根据内容确认错误阿里云都没有错误日志,就证明没有成功调用,所以大概率是配置信息的问题
错误信息已经给了,使用
$exception->getExceptions()
获取这是我最近刚做的,配置的方法和你的基本一样,我是这样调用的: