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

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


咨詢
建站咨詢
