thinkphp6对接阿里云短信服务完成定时发送短信功能

1、导入阿里短信包

通过composer下载依赖包

composer require alibabacloud/dysmsapi-20170525 2.0.22

具体可参见阿里云短信服务 >> 快速学习

阿里云 OpenAPI 开发者门户

2、编写发送短信程序

class Index
{
    private $log;
    public function index(){
        //需要发送的用户数组
        $users=[
                [
                    'mobile' => '手机号码',
                    'name' => '姓名'
                ]
            ];

        foreach ($users as $user){
            //手机
            $mobile = $user['mobile'];
            //姓名
            $name = $user['name'];

            //短信参数
            $params = [
                'name' => $name,//姓名
            ];

            //发送短信
            $this->sendSms($mobile,'阿里云短信模板编号',$params);
        }
    }
    //发送短信
    private function sendSms($mobile,$smsCode,$params=''){
        //手机号码
        $phone = trim($mobile);

        $data = [
            'templateCode' => $smsCode,//短信模板编号
            'phone' => $phone,//手机号码
            //短信参数
            'params' => $params
        ];

        //调用阿里云短信发送方法
        $result = Alicode\AliSms::main($data);
    }
}

extend目录创建Alicode/AliSms类

namespace Alicode;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;


class AliSms
{
    /**
     * 使用AK&SK初始化账号Client
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @return Dysmsapi Client
     */
    public static function createClient(string $accessKeyId, string $accessKeySecret): Dysmsapi
    {
        $config = new Config([
            // 您的AccessKey ID
            "accessKeyId" => $accessKeyId,
            // 您的AccessKey Secret
            "accessKeySecret" => $accessKeySecret
        ]);
        // 访问的域名
        $config->endpoint = "dysmsapi.aliyuncs.com";
        return new Dysmsapi($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main(array $args)
    {
        $client = self::createClient("LTAI5tSSAjCaVBxKPbMeoXb6", "KCwxkcnplJThtPOwBh0Mc8xvDolp8w");

        //签名
        $signName='你的签名';
        //短信参数
        $templateParam=$args['params'];
        if(!empty($templateParam)){
            //有参数
            $sendSmsRequest = new SendSmsRequest([
                "phoneNumbers" => $args['phone'],
                "signName" => $signName,
                "templateCode" => $args['templateCode'],
                "templateParam" => json_encode($templateParam)
            ]);
        }else{
            //无参数
            $sendSmsRequest = new SendSmsRequest([
                "phoneNumbers" => $args['phone'],
                "signName" => $signName,
                "templateCode" => $args['templateCode'],
            ]);
        }


        $result = $client->sendSms($sendSmsRequest);
        if ($result->body->message == 'OK' && $result->body->code == 'OK') {
            return ['code' => 200,'msg'=>'success'];
        }
        if ($result->body->code == 'isv.MOBILE_NUMBER_ILLEGAL') {
            return ['code' => 0, 'msg' => '手机号码格式不正确'];
        }
        return ['code' => 0, 'msg' => '短信发送失败,网络繁忙'];
    }
}

3、设置定时任务

crontab -e

写入以下信息:比如我是设定每天10点发送

0 10 * * * /usr/bin/curl 你的网址

然后,开启定时服务

systemctl start crond.service

如果已经开启,则重启

systemctl restart crond.service

查看定时任务

crontab -l

实时监控日志

 tail -f /var/log/cron

退出tail:Ctrl + C

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值