新聞中心
特點
- 支持目前市面多家服務(wù)商
- 一套寫法兼容所有平臺
- 簡單配置即可靈活增減服務(wù)商
- 內(nèi)置多種服務(wù)商輪詢策略、支持自定義輪詢策略
- 統(tǒng)一的返回值格式,便于日志與監(jiān)控
- 自動輪詢選擇可用的服務(wù)商
- 更多等你去發(fā)現(xiàn)與改進...
平臺支持
阿里云
云片
Submail
螺絲帽
容聯(lián)云通訊
互億無線
聚合數(shù)據(jù)
SendCloud
百度云
華信短信平臺
253云通訊(創(chuàng)藍)
融云
天毅無線
騰訊云 SMS
阿凡達數(shù)據(jù)
華為云
網(wǎng)易云信
云之訊
凱信通
七牛云
UE35.net
Ucloud
短信寶
Tiniyo
摩杜云
融合云(助通)
蜘蛛云

建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁設(shè)計師等,應(yīng)用各種網(wǎng)絡(luò)程序開發(fā)技術(shù)和網(wǎng)頁設(shè)計技術(shù)配合操作的協(xié)同工作。成都創(chuàng)新互聯(lián)專業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站制作(企業(yè)站、自適應(yīng)網(wǎng)站建設(shè)、電商門戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗的提升,我們力求做到極致!
環(huán)境需求
- PHP >= 5.6
安裝
$ composer require "overtrue/easy-sms"
For Laravel notification
如果你喜歡使用?Laravel Notification, 可以考慮直接使用朋友封裝的拓展包:
https://github.com/yl/easysms-notification-channel
使用
use Overtrue\EasySms\EasySms;
$config = [
// HTTP 請求的超時時間(秒)
'timeout' => 5.0,
// 默認發(fā)送配置
'default' => [
// 網(wǎng)關(guān)調(diào)用策略,默認:順序調(diào)用
'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
// 默認可用的發(fā)送網(wǎng)關(guān)
'gateways' => [
'yunpian', 'aliyun',
],
],
// 可用的網(wǎng)關(guān)配置
'gateways' => [
'errorlog' => [
'file' => '/tmp/easy-sms.log',
],
'yunpian' => [
'api_key' => '824f0ff2f71cab52936axxxxxxxxxx',
],
'aliyun' => [
'access_key_id' => '',
'access_key_secret' => '',
'sign_name' => '',
],
//...
],
];
$easySms = new EasySms($config);
$easySms->send(13188888888, [
'content' => '您的驗證碼為: 6379',
'template' => 'SMS_001',
'data' => [
'code' => 6379
],
]);
短信內(nèi)容
由于使用多網(wǎng)關(guān)發(fā)送,所以一條短信要支持多平臺發(fā)送,每家的發(fā)送方式不一樣,但是我們抽象定義了以下公用屬性:
content?文字內(nèi)容,使用在像云片類似的以文字內(nèi)容發(fā)送的平臺template?模板 ID,使用在以模板ID來發(fā)送短信的平臺data?模板變量,使用在以模板ID來發(fā)送短信的平臺
所以,在使用過程中你可以根據(jù)所要使用的平臺定義發(fā)送的內(nèi)容。
$easySms->send(13188888888, [
'content' => '您的驗證碼為: 6379',
'template' => 'SMS_001',
'data' => [
'code' => 6379
],
]);
你也可以使用閉包來返回對應(yīng)的值:
$easySms->send(13188888888, [
'content' => function($gateway){
return '您的驗證碼為: 6379';
},
'template' => function($gateway){
return 'SMS_001';
},
'data' => function($gateway){
return [
'code' => 6379
];
},
]);
你可以根據(jù)?$gateway?參數(shù)類型來判斷返回值,例如:
$easySms->send(13188888888, [
'content' => function($gateway){
if ($gateway->getName() == 'yunpian') {
return '云片專用驗證碼:1235';
}
return '您的驗證碼為: 6379';
},
'template' => function($gateway){
if ($gateway->getName() == 'aliyun') {
return 'TP2818';
}
return 'SMS_001';
},
'data' => function($gateway){
return [
'code' => 6379
];
},
]);
發(fā)送網(wǎng)關(guān)
默認使用?default?中的設(shè)置來發(fā)送,如果某一條短信你想要覆蓋默認的設(shè)置。在?send?方法中使用第三個參數(shù)即可:
$easySms->send(13188888888, [
'content' => '您的驗證碼為: 6379',
'template' => 'SMS_001',
'data' => [
'code' => 6379
],
], ['yunpian', 'juhe']); // 這里的網(wǎng)關(guān)配置將會覆蓋全局默認值
返回值
由于使用多網(wǎng)關(guān)發(fā)送,所以返回值為一個數(shù)組,結(jié)構(gòu)如下:
[
'yunpian' => [
'gateway' => 'yunpian',
'status' => 'success',
'result' => [...] // 平臺返回值
],
'juhe' => [
'gateway' => 'juhe',
'status' => 'failure',
'exception' => \Overtrue\EasySms\Exceptions\GatewayErrorException 對象
],
//...
]
如果所選網(wǎng)關(guān)列表均發(fā)送失敗時,將會拋出?Overtrue\EasySms\Exceptions\NoGatewayAvailableException?異常,你可以使用?$e->results?獲取發(fā)送結(jié)果。
你也可以使用?$e?提供的更多便捷方法:
$e->getResults(); // 返回所有 API 的結(jié)果,結(jié)構(gòu)同上 $e->getExceptions(); // 返回所有調(diào)用異常列表 $e->getException($gateway); // 返回指定網(wǎng)關(guān)名稱的異常對象 $e->getLastException(); // 獲取最后一個失敗的異常對象
自定義網(wǎng)關(guān)
本拓展已經(jīng)支持用戶自定義網(wǎng)關(guān),你可以很方便的配置即可當(dāng)成與其它拓展一樣的使用:
$config = [
...
'default' => [
'gateways' => [
'mygateway', // 配置你的網(wǎng)站到可用的網(wǎng)關(guān)列表
],
],
'gateways' => [
'mygateway' => [...], // 你網(wǎng)關(guān)所需要的參數(shù),如果沒有可以不配置
],
];
$easySms = new EasySms($config);
// 注冊
$easySms->extend('mygateway', function($gatewayConfig){
// $gatewayConfig 來自配置文件里的 `gateways.mygateway`
return new MyGateway($gatewayConfig);
});
$easySms->send(13188888888, [
'content' => '您的驗證碼為: 6379',
'template' => 'SMS_001',
'data' => [
'code' => 6379
],
]);
國際短信
國際短信與國內(nèi)短信的區(qū)別是號碼前面需要加國際碼,但是由于各平臺對國際號碼的寫法不一致,所以在發(fā)送國際短信的時候有一點區(qū)別:
use Overtrue\EasySms\PhoneNumber;
// 發(fā)送到國際碼為 31 的國際號碼
$number = new PhoneNumber(13188888888, 31);
$easySms->send($number, [
'content' => '您的驗證碼為: 6379',
'template' => 'SMS_001',
'data' => [
'code' => 6379
],
]);
定義短信
你可以根據(jù)發(fā)送場景的不同,定義不同的短信類,從而實現(xiàn)一處定義多處調(diào)用,你可以繼承?Overtrue\EasySms\Message?來定義短信模型:
order = $order;
}
// 定義直接使用內(nèi)容發(fā)送平臺的內(nèi)容
public function getContent(GatewayInterface $gateway = null)
{
return sprintf('您的訂單:%s, 已經(jīng)完成付款', $this->order->no);
}
// 定義使用模板發(fā)送方式平臺所需要的模板 ID
public function getTemplate(GatewayInterface $gateway = null)
{
return 'SMS_003';
}
// 模板參數(shù)
public function getData(GatewayInterface $gateway = null)
{
return [
'order_no' => $this->order->no
];
}
}
更多自定義方式請參考:
Overtrue\EasySms\Message
發(fā)送自定義短信:
$order = ...; $message = new OrderPaidMessage($order); $easySms->send(13188888888, $message);
各平臺配置說明
阿里云
短信內(nèi)容使用?template?+?data
'aliyun' => [
'access_key_id' => '',
'access_key_secret' => '',
'sign_name' => '',
],
阿里云Rest
短信內(nèi)容使用?template?+?data
'aliyunrest' => [
'app_key' => '',
'app_secret_key' => '',
'sign_name' => '',
],
云片
短信內(nèi)容使用?content
'yunpian' => [
'api_key' => '',
'signature' => '【默認簽名】', // 內(nèi)容中無簽名時使用
],
Submail
短信內(nèi)容使用?data
'submail' => [
'app_id' => '',
'app_key' => '',
'project' => '', // 默認 project,可在發(fā)送時 data 中指定
],
螺絲帽
短信內(nèi)容使用?content
'luosimao' => [
'api_key' => '',
],
容聯(lián)云通訊
短信內(nèi)容使用?template?+?data
'yuntongxun' => [
'app_id' => '',
'account_sid' => '',
'account_token' => '',
'is_sub_account' => false,
],
互億無線
短信內(nèi)容使用?content
'huyi' => [
'api_id' => '',
'api_key' => '',
'signature' => '',
],
聚合數(shù)據(jù)
短信內(nèi)容使用?template?+?data
'juhe' => [
'app_key' => '',
],
SendCloud
短信內(nèi)容使用?template?+?data
'sendcloud' => [
'sms_user' => '',
'sms_key' => '',
'timestamp' => false, // 是否啟用時間戳
],
百度云
短信內(nèi)容使用?template?+?data
'baidu' => [
'ak' => '',
'sk' => '',
'invoke_id' => '',
'domain' => '',
],
華信短信平臺
短信內(nèi)容使用?content
'huaxin' => [
'user_id' => '',
'password' => '',
'account' => '',
'ip' => '',
'ext_no' => '',
],
253云通訊(創(chuàng)藍)
短信內(nèi)容使用?content
'chuanglan' => [
'account' => '',
'password' => '',
// 國際短信時必填
'intel_account' => '',
'intel_password' => '',
// \Overtrue\EasySms\Gateways\ChuanglanGateway::CHANNEL_VALIDATE_CODE => 驗證碼通道(默認)
// \Overtrue\EasySms\Gateways\ChuanglanGateway::CHANNEL_PROMOTION_CODE => 會員營銷通道
'channel' => \Overtrue\EasySms\Gateways\ChuanglanGateway::CHANNEL_VALIDATE_CODE,
// 會員營銷通道 特定參數(shù)。創(chuàng)藍規(guī)定:api提交營銷短信的時候,需要自己加短信的簽名及退訂信息
'sign' => '【通訊云】',
'unsubscribe' => '回TD退訂',
],
融云
短信分為兩大類,驗證類和通知類短信。 發(fā)送驗證類短信使用?template?+?data
'rongcloud' => [
'app_key' => '',
'app_secret' => '',
]
天毅無線
短信內(nèi)容使用?content
'tianyiwuxian' => [
'username' => '', //用戶名
'password' => '', //密碼
'gwid' => '', //網(wǎng)關(guān)ID
]
twilio
短信使用?content?發(fā)送對象需要 使用+添加區(qū)號
'twilio' => [
'account_sid' => '', // sid
'from' => '', // 發(fā)送的號碼 可以在控制臺購買
'token' => '', // apitoken
],
tiniyo
短信使用?content?發(fā)送對象需要 使用+添加區(qū)號
'tiniyo' => [
'account_sid' => '', // auth_id from https://tiniyo.com
'from' => '', // 發(fā)送的號碼 可以在控制臺購買
'token' => '', // auth_secret from https://tiniyo.com
],
騰訊云 SMS
短信內(nèi)容使用?content
'qcloud' => [
'sdk_app_id' => '', // SDK APP ID
'app_key' => '', // APP KEY
'sign_name' => '', // 短信簽名,如果使用默認簽名,該字段可缺省(對應(yīng)官方文檔中的sign)
],
發(fā)送示例:
$easySms->send(18888888888, [
'template' => 101234, // 模板ID
'content' => "您的動態(tài)驗證碼為:{1},請于5分鐘內(nèi)完成驗證,如非本人操作,請忽略本短信!", // 模板內(nèi)容
'data' => [
$code, // 模板變量
],
]);
阿凡達數(shù)據(jù)
短信內(nèi)容使用?template?+?data
'avatardata' => [
'app_key' => '', // APP KEY
],
華為云 SMS
短信內(nèi)容使用?template?+?data
'huawei' => [
'endpoint' => '', // APP接入地址
'app_key' => '', // APP KEY
'app_secret' => '', // APP SECRET
'from' => [
'default' => '1069012345', // 默認使用簽名通道號
'custom' => 'csms12345', // 其他簽名通道號 可以在 data 中定義 from 來指定
'abc' => 'csms67890', // 其他簽名通道號
...
],
'callback' => '' // 短信狀態(tài)回調(diào)地址
],
使用默認簽名通道?default
$easySms->send(13188888888, [
'template' => 'SMS_001',
'data' => [
6379
],
]);
使用指定簽名通道
$easySms->send(13188888888, [
'template' => 'SMS_001',
'data' => [
6379,
'from' => 'custom' // 對應(yīng) config 中的 from 數(shù)組中 custom
],
]);
網(wǎng)易云信
短信內(nèi)容使用?template?+?data
'yunxin' => [
'app_key' => '',
'app_secret' => '',
'code_length' => 4, // 隨機驗證碼長度,范圍 4~10,默認為 4
'need_up' => false, // 是否需要支持短信上行
],
$easySms->send(18888888888, [
'template' => 'SMS_001', // 不填則使用默認模板
'data' => [
'code' => 8946, // 如果設(shè)置了該參數(shù),則 code_length 參數(shù)無效
'action' => 'sendCode', // 默認為 `sendCode`,校驗短信驗證碼使用 `verifyCode`
],
]);
云之訊
短信內(nèi)容使用?template?+?data
'yunzhixun' => [
'sid' => '',
'token' => '',
'app_id' => '',
],
$easySms->send(18888888888, [
'template' => 'SMS_001',
'data' => [
'params' => '8946,3', // 模板參數(shù),多個參數(shù)使用 `,` 分割,模板無參數(shù)時可為空
'uid' => 'hexianghui', // 用戶 ID,隨狀態(tài)報告返回,可為空
'mobiles' => '18888888888,188888888889', // 批量發(fā)送短信,手機號使用 `,` 分割,不使用批量發(fā)送請不要設(shè)置該參數(shù)
],
]);
凱信通
短信內(nèi)容使用?content
'kingtto' => [
'userid' => '',
'account' => '',
'password' => '',
],
$easySms->send(18888888888, [
'content' => '您的驗證碼為: 6379',
]);
七牛云
短信內(nèi)容使用?template?+?data
'qiniu' => [
'secret_key' => '',
'access_key' => '',
],
$easySms->send(18888888888, [
'template' => '1231234123412341234',
'data' => [
'code' => 1234,
],
]);
Ucloud
短信使用?template?+?data
'ucloud' => [
'private_key' => '', //私鑰
'public_key' => '', //公鑰
'sig_content' => '', // 短信簽名,
'project_id' => '', //項目ID,子賬號才需要該參數(shù)
],
$easySms->send(18888888888, [
'template' => 'UTAXXXXX', //短信模板
'data' => [
'code' => 1234, //模板參數(shù),模板沒有參數(shù)不用則填寫,有多個參數(shù)請用數(shù)組,[1111,1111]
'mobiles' =>'', //同時發(fā)送多個手機短信,請用數(shù)組[xxx,xxx]
],
]);
短信寶
短信使用?content
'smsbao' => [
'user' => '', //賬號
'password' => '' //密碼
],
$easySms->send(18888888888, [
'content' => '您的驗證碼為: 6379', //短信模板
]);
摩杜云
短信使用?template?+?data
'moduyun' => [
'accesskey' => '', //必填 ACCESS KEY
'secretkey' => '', //必填 SECRET KEY
'signId' => '', //選填 短信簽名,如果使用默認簽名,該字段可缺省
'type' => 0, //選填 0:普通短信;1:營銷短信
],
$easySms->send(18888888888, [
'template' => '5a95****b953', //短信模板
'data' => [
1234, //模板參數(shù),對應(yīng)模板的{1}
30 //模板參數(shù),對應(yīng)模板的{2}
//...
],
]);
融合云(助通)
短信使用?template?+?data
'rongheyun' => [
'username' => '', //必填 用戶名
'password' => '', //必填 密碼
'signature'=> '', //必填 已報備的簽名
],
$easySms->send(18888888888, [
'template' => '31874', //短信模板
'data' => [
'valid_code' => '888888', //模板參數(shù),對應(yīng)模板的{valid_code}
//...
],
]);
蜘蛛云
短信使用?template?+?data
'zzyun' => [
'user_id' => '', //必填 會員ID
'secret' => '', //必填 接口密鑰
'sign_name'=> '', //必填 短信簽名
],
$easySms->send(18888888888, [
'template' => 'SMS_210317****', //短信模板
'data' => [
'code' => '888888', //模板參數(shù),對應(yīng)模板的{code}
//...
],
]);
網(wǎng)頁標(biāo)題:EasySMS:一款滿足你的多種發(fā)送需求的短信發(fā)送組件
網(wǎng)頁地址:http://m.5511xx.com/article/cddsgsc.html


咨詢
建站咨詢
