使用腾讯云发送短信
创建一个config/easysms.php文件
<?php
return [
// HTTP 请求的超时时间(秒)
'timeout' => 5.0,
// 默认发送配置
'default' => [
// 网关调用策略,默认:顺序调用
'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
// 默认可用的发送网关
'gateways' => [
'qcloud',
],
],
// 可用的网关配置
'gateways' => [
'errorlog' => [
'file' => __DIR__.'/../storage/logs/easy-sms.log',
],
'qcloud' => [
'sdk_app_id' => env('QCLOUD_APP_ID' , ''), // SDK APP ID
'app_key' => env('QCLOUD_APP_KEY' , ''), // APP KEY
'sign_name' => env('QCLOUD_SIGN_NAME' , ''), // 对应的是短信签名中的内容(非id)
],
],
];
类
use Carbon\Carbon;
use Qcloud\Sms\SmsSingleSender;
use Overtrue\EasySms\EasySms;
/**
* Class SendSmsService 发送短信接口
* @package App\Services
*/
class SendSmsService
{
/**
* 腾讯云自带sdk
* @param $phoneNumbers static 电话号码
* @param $code string 验证码
* @return bool true为发送成功
*/
public function qcloud($phoneNumbers,$code)
{
$smsSign = config('easysms.gateways.sign_name');
$templateId = 205650;
try {
$ssender = new SmsSingleSender(config('easysms.gateways.qcloud.sdk_app_id'), config('easysms.gateways.qcloud.app_key'));
$params = [$code]; // 验证码
$result = $ssender->sendWithParam("86", $phoneNumbers[0], $templateId, // 86 - 国家电话代码 , 电话号码,短信正文模板id,验证码,短信签名,默认为空,默认为空
$params, $smsSign, "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信
$result = json_decode($result,true); // 这里会返回一个发送短信的结果
if( $result['errmsg'] == 'OK' ) {
return true;
}
} catch(\Exception $e) {
$error = [
'msg' => $e,
'phone' => $phoneNumbers,
'time' => Carbon::now()
];
\Log::error('发送失败' . json_encode($error));
}
return false;
}
/**
* easysms - sdk发送
* @param $phoneNumbers static 电话号码
* @param $code string 验证码
* @return bool true为发送成功
*/
public function easysms($phoneNumbers,$code)
{
$config = config('easysms');
$easySms = new EasySms($config);
try{
$result = $easySms->send($phoneNumbers, [
'template' => '205650',
'data' => [
'code' => $code
],
]); // 这里会返回一个发送短信的结果
if( $result['qcloud']['result']['errmsg'] == 'OK' ) {
return true;
}
}catch (\Overtrue\EasySms\Exceptions\NoGatewayAvailableException $exception){
$error = [
'msg' => $exception->getException(),
'phone' => $phoneNumbers,
'time' => Carbon::now()
];
\Log::error('发送失败' . json_encode($error));
}
return false;
}
}
关于 LearnKu
如果看到这里,恭喜你,你看对了,这个code是正确的,我稍微添加一下补充
[申请腾讯短信步骤]
1:申请个账号先,直接使用微信扫码登录
2:申请成功去到【短信-应用列表】添加应用,进入你所创建的应用,这里可以看到你的【SDK AppID】【APP key】
3:点击【应用配置】列表旁边的【国内短信】,点击【短信内容配置】申请【短信签名】和【短信正文】两部分
4:请注意:文件【config/easysms.php】中 【gateways】 => 【qcloud】=> 【sign_name】里面配置的是你审核通过的【短信签名内容】