thinkphp6使用阿里云SDK发送短信

使用composer安装sdk

php 复制代码
   "alibabacloud/dysmsapi-20170525": "2.0.24"

封装发送短信类

发送到的短信参数写在env文件里面的

php 复制代码
#发送短信配置
[AliyunSms]
AccessKeyId = ""
AccessKeySecret =""
signName=""
templateCode=""
php 复制代码
<?php


namespace app\api\service;







use AlibabaCloud\Credentials\Credential\Config;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Exception;
use think\facade\Env;

class AliSms
{


    /**
     * 发送短信验证码
     *
     * @param string $phoneNumber 手机号码
     * @param string $code 验证码
     * @return bool 发送成功返回true,否则返回false
     */
    public static function  sendSmsCode($phoneNumber, $code):array
    {
        // 阿里云控制台中获取的AccessKey信息
        $accessKeyId = Env::get("AliyunSms.AccessKeyId");
        $accessSecret = Env::get("AliyunSms.AccessKeySecret");

// 短信模板CODE,根据自己的模板填写
        $templateCode = Env::get("AliyunSms.templateCode");

// 短信签名,根据自己的签名填写
        $signName = Env::get("AliyunSms.signName");
        try {
            $config = new Config([
                // 必填,您的 AccessKey ID
                "accessKeyId" => $accessKeyId,
                // 必填,您的 AccessKey Secret
                "accessKeySecret" => $accessSecret
            ]);
            // 访问的域名
            $config->endpoint = "dysmsapi.aliyuncs.com";
            $client = new Dysmsapi($config);

            $sendSmsRequest = new SendSmsRequest([
                "phoneNumbers" => $phoneNumber,
                "signName" => $signName,
                "templateCode" => $templateCode,
                "templateParam" => json_encode(array('code' => $code))
            ]);
            $runtime = new RuntimeOptions([]);


            // 复制代码运行请自行打印 API 的返回值
            $result = $client->sendSmsWithOptions($sendSmsRequest, $runtime);


            if ($result->statusCode == 200) {
                return ["code" => 1, "msg" => "短信发送成功"];
            } else {
                // 短信发送失败
                return ["code" => -1, "msg" => "发送失败"];
            }
        } catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            // 如有需要,请打印 error

            return ["code" => -1, "msg" =>    Utils::assertAsString($error->message)];

        }


    }

}

调用方法

php 复制代码
  $code = rand(1000, 9999);
  $res = AliSms::sendSmsCode($phone, $code);
相关推荐
TG_yunshuguoji16 分钟前
阿里云代理商:阿里云数字短信全面开放!触达新方案
阿里云·云计算·云服务器
Wave8452 小时前
STM32+ESP8266 智能手表实战:天气获取与阿里云时钟同步
stm32·阿里云·智能手表
DisonTangor4 小时前
【阿里拥抱开源】千问开源Qwen3.6-35B-A3B,并配上调参参考
人工智能·阿里云·开源·aigc
有谁看见我的剑了?5 小时前
Rocky Linux 更换 阿里云的镜像源
linux·运维·阿里云
小白考证进阶中6 小时前
阿里云ACA部分考试成绩分享(2月/3月/4月)
运维·阿里云·云计算·阿里云认证·阿里云aca认证·阿里云aca·阿里云aca大数据认证
TG_yunshuguoji1 天前
阿里云代理商:2026年云端与本地双轨部署OpenClaw 方案
服务器·阿里云·云计算·openclaw
叫我黎大侠1 天前
.NET 实战:调用千问视觉模型实现 OCR(车票识别完整教程)
阿里云·ai·c#·ocr·asp.net·.net·.netcore
hexu_blog1 天前
记录一下阿里云OSS直接通过web端或者其他的前端上传文件时,bucket配置过程
阿里云·云计算
看海的四叔1 天前
【Python】阿里云 DataWorks + ODPS + 钉钉联动实战:配合[特殊字符]全搞定
python·阿里云·api·odps·requests·openclaw
TMT星球2 天前
阿里云连续5年稳居游戏云市场份额第一
游戏·阿里云·云计算