使用腾讯云发送短信

创建一个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;
    }
}
每天3小时...加油
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

如果看到这里,恭喜你,你看对了,这个code是正确的,我稍微添加一下补充

[申请腾讯短信步骤]

1:申请个账号先,直接使用微信扫码登录

2:申请成功去到【短信-应用列表】添加应用,进入你所创建的应用,这里可以看到你的【SDK AppID】【APP key】

3:点击【应用配置】列表旁边的【国内短信】,点击【短信内容配置】申请【短信签名】和【短信正文】两部分

4:请注意:文件【config/easysms.php】中 【gateways】 => 【qcloud】=> 【sign_name】里面配置的是你审核通过的【短信签名内容】

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!