karnoweb / sms-sender
A fluent SMS manager for Laravel with multi-driver support and automatic failover.
13.0.0
2026-07-08 12:37 UTC
Requires
- php: ^8.3
- guzzlehttp/guzzle: ^7.0
- illuminate/config: ^13.0
- illuminate/container: ^13.0
- illuminate/contracts: ^13.0
- illuminate/database: ^13.0
- illuminate/support: ^13.0
Requires (Dev)
- orchestra/testbench: ^11.0
- phpunit/phpunit: ^11.0|^12.0
README
A fluent SMS manager for Laravel with multi-driver support and automatic failover.
โจ Features
- ๐ Fluent API โ Chainable, readable interface
- ๐ Auto Failover โ Automatic switch between SMS providers
- ๐ Logging โ Every attempt logged to database
- ๐ Delivery Reports โ Check message delivery status
- ๐ Extensible โ Add custom drivers with a single interface
- โ๏ธ Usage Control โ Daily/monthly limits per driver
- ๐ OTP/Lookup โ Provider-template verification (Kavenegar verify/lookup)
๐ Quick Start
# Laravel 13 composer require karnoweb/sms-sender:^13.0 # Laravel 11โ12 composer require karnoweb/sms-sender:^2.0
php artisan vendor:publish --tag=sms-config php artisan vendor:publish --tag=sms-migrations php artisan migrate
```php
use Karnoweb\SmsSender\Facades\Sms;
// Simple message
Sms::message('Hello World')
->number('09120000000')
->send();
// OTP via provider template (Kavenegar verify/lookup)
Sms::otp(config('sms.lookups.login_otp', 'login'))
->inputs(['token' => '1234'])
->number('09120000000')
->send();
// Multiple recipients
Sms::message('Announcement')
->numbers(['09121111111', '09122222222'])
->send();
// Check delivery status
$results = Sms::number('09120000000')->checkStatus();
๐ Documentation
Full documentation is available in the docs/ directory.
| # | Topic |
|---|---|
| 01 | Overview |
| 02 | Installation |
| 03 | Configuration |
| 04 | Basic Usage |
See CHANGELOG.md for v2.0 breaking changes.
๐งช Testing
./vendor/bin/phpunit
๐ License
MIT License. See LICENSE for details.