timeshow/laravel-sms

Laravel短信API

v0.5.0 2024-02-22 06:07 UTC

This package is auto-updated.

Last update: 2024-09-22 07:58:24 UTC


README

这是一个用于短信网关集成的Laravel包。现在发送短信变得容易。

支持网关列表

安装

通过Composer

$ composer require timeshow/laravel-sms

SmsServiceProvider添加到您的config/app.php

//providers
'providers' => [
    // ...
    TimeShow\Sms\SmsServiceProvider::class,
]
    
//aliases
'aliases' => [
    //...
    'Sms' => TimeShow\Sms\Facades\Sms::class,    
]

发布短信配置文件。

php artisan vendor:publish --tag="sms"

在配置文件中,您可以设置默认的驱动程序,用于您所有的短信。但是,您也可以在运行时更改驱动程序。

选择您希望为您的应用程序使用的网关。然后将其作为默认驱动程序,这样您就无需在所有地方指定它。但是,您也可以在项目中使用多个网关。

配置(.env)

//default driver
SMS_DEFAULT=aliyun

//fallback driver
SMS_FALLBACK=juhe

//default signName  (Important: The signName should be enclosed in {})
SMS_SIGNNAME={sms}


ALIYUN_APP_KEY=your-appkey
ALIYUN_APP_SECRET=your-appsecret
ALIYUN_TEMPLATE_ID=your-templates-id  //ValueSMS_12345678

JUHE_KEY=your-key
JUHE_TEMPLATE_ID=your-templates-id  //Value123456

YUNPIAN_API_KEY=your-appkey
YUNPIAN_TEMPLATE_CONTENT=your-template-content  //Value:您的验证码是{verifyCode},有效期为{time}分钟,请尽快验证

QQYUN_APP_ID=your-appid
QQYUN_APP_KEY=your-appkey
QQYUN_TEMPLATE_ID=your-templates-id //Value12345

然后在驱动数组中填写该网关的凭证。

/*
|--------------------------------------------------------------------------
| Default Driver
|--------------------------------------------------------------------------
*/
'default' => env('SMS_DRIVER', 'aliyun'),
'fallback' => env('SMS_FALLBACK', 'juhe'),
'signName' => env('SMS_SIGNNAME', ''),

/*
|--------------------------------------------------------------------------
| List of Drivers
|--------------------------------------------------------------------------
*/
'drivers' => [
    // Install: composer require
    'aliyun' => [
        'appKey' => env('ALIYUN_APP_KEY', 'Your Access Key'),
        'appSecret' => env('ALIYUN_APP_SECRET', 'Your Secret Key'),
        'templateId' => env('ALIYUN_TEMPLATE_ID', 0),
        'driverFile' => 'ALiYun',
    ],
    'juhe' => [
        'key' => env('JUHE_KEY', 'Your Access Key'),
        'templateId' => env('JUHE_TEMPLATE_ID', 0),
        'driverFile' => 'JuHe',
    ],
    'yunpian' => [
        'apiKey' => env('YUNPIAN_API_KEY'),
        'templateContent' => env('YUNPIAN_TEMPLATE_CONTENT'),
        'driverFile' => 'YunPian',
    ],
    'qqyun' => [
        'appId' => env('QQYUN_APP_ID', 'Your App Id'),
        'appKey' => env('QQYUN_APP_KEY', 'Your App Key'),
        'templateId' => env('QQYUN_TEMPLATE_ID', 0),
        'executableFile' => 'QQYun',
    ],
],

基本用法

使用方法如下

//default
$sms = Sms::driver();
//fallback
$sms = Sms::driver('fallback');
//other options
$sms = Sms::driver('juhe');
$sms = Sms::driver('aliyun');
$sms = Sms::driver('yunpian');

用法

$sms = Sms::driver();
$sms->setTemplateId(123456);
$sms->setSignName('your_signName');
$sms->setContent($content);
$sms->setContentByVerifyCode(20);  //Your verification code is {verifyCode}, valid for 20 minutes
$sms->makeStr();   // Generate a 16 bit default random string
$sms->makeCode(6);   // 100000~999999  1000~9999  10000000~99999999
$sms->makeRandom();  // 100000~999999

$templateVar = ['code' => $verifyCode];   // ['code' => '110101', 'time' =>'10']
$sms->setTemplateVar($templateVar);
$sms->setTemplateVar($templateVar, true);

$sms->send($mobile);
$sms->send($mobile, false);

基本用法

// JuHe
$sms->setContent('#code#=' . $code);

// ALiYun & QQYun
$templateVar = ['code' => $code];

// YunPian
$sms->setContentByVerifyCode();

示例

// Custom
$sms = Sms::driver();
$default = config('sms.default');
$templateId = config('sms.drivers.' . $default . '.templateId');
$sms->setTemplateId($templateId);
$content = 'Your verification code is {verifyCode}, Valid for {time} minutes';
$sms->setContent($content);
$result = $sms->send($mobile);

//Or JuHe
$sms = Sms::driver();
$default = config('sms.default');
$templateId = config('sms.drivers.' . $default . '.templateId');
$sms->setTemplateId($templateId);
$code = $sms->makeCode(6);
$sms->setContent('#code#='.$code);
$result = $sms->send($mobile, true);

//Or ALiYun
$sms = Sms::driver();
$default = config('sms.default');
$templateId = config('sms.drivers.' . $default . '.templateId');
$sms->setTemplateId($templateId);
$code = $sms->makeCode(6);
$templateVar = ['code' => $code];
$sms->setTemplateVar($templateVar, true);
$result = $sms->send($mobile, true);

//Or YunPian
$sms = Sms::driver();
$templateVar = ['yzm' => 'verifyCode'];
$sms->setTemplateVar($templateVar, true);
$sms->setContentByVerifyCode(20);
$result = $sms->send($mobile);

//Or Set Content By Custom
$sms = Sms::driver();
$sms->setSignName('your_signName');
$content = '{name},Your account is logged in from another location. If it was not for you, please change the password in a timely manner';  //content
$templateVar = ['name' => 'you name']; 
$sms->setContent($content);
$sms->setContentByCustomVar($templateVar);
//Value:you name,Your account is logged in from another location. If it was not for you, please change the password in a timely manner

//Or QQYun
$sms = Sms::driver();
$default = config('sms.default');
$templateId = config('sms.drivers.' . $default . '.templateId');
$sms->setTemplateId($templateId);
$code = $sms->makeCode(6);
$templateVar = ['code' => $code];
$sms->setTemplateVar($templateVar, true);
$result = $sms->send($mobile, true);

安全

如果您发现任何安全相关的问题,请通过电子邮件397975896@qq.com联系,而不是使用问题跟踪器。

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件。