Elanak is a robust Laravel SMS package that sends text messages through multiple SMS service providers behind one consistent, fluent interface. Rather than juggling a separate SDK and a separate panel for every provider, Elanak consolidates all of them into a single repository — so you can switch gateways by changing one method call, with no rewrite of your sending logic.
Built for the Laravel framework (with a service provider and Elanak facade for auto-discovery), it aims for better ergonomics and performance than scattering several SMS libraries across a project. It supports both simple text messages and pattern / template-based messages (OTP, verification codes, transactional notifications), making it ideal for authentication, alerts, and notification workflows.
🔎 Keywords: Laravel SMS, PHP SMS package, send SMS Laravel, SMS gateway Laravel, Kavenegar Laravel, Melipayamak, IPPanel, SMS.ir, Payamresan, OTP SMS, pattern SMS, multi-provider SMS sender.
- 📡 Multiple providers, one API — swap gateways with a single
via()call. - 🧩 Fluent builder — chainable
send()->via()->api()->from()->to()->dispatch()syntax. - 🔢 Pattern / template messages — send OTP and templated SMS with
pattern($code, $values). - 🧱 Laravel-native — auto-registered service provider and
Elanakfacade. - 🗂️ Panels consolidated — every supported SMS panel lives in one repository.
- 🪶 Lightweight — a thin, focused wrapper over each provider's API.
The following gateways are implemented under src/Getways/:
| Provider | Driver name |
|---|---|
| Kavenegar | kavenegar |
| Melipayamak | melipayamak |
| IPPanel | ippanel |
| SMS.ir | smsir |
| Payamresan | payamresan |
| Component | Technology |
|---|---|
| Language | PHP |
| Framework | Laravel (service provider + Elanak facade) |
| Install | Composer (PSR-4: Morpheusadam\Elanak\) |
composer require morpheusadam/SmsForgecomposer require kavenegar/laravel
composer require melipayamak/laravel:1.0.0
composer require ippanel/php-rest-sdkTo remove Elanak later:
composer remove morpheusadam/SmsForgeElanak::send($messages)
->via($provider) // e.g. 'kavenegar', 'melipayamak', 'ippanel', 'smsir', 'payamresan'
->api($api)
->from($sender)
->to('09185312051')
->dispatch();Melipayamak
Elanak::send($messages)
->to($to)
->via($providerName)
->api($api)
->pattern($patternCode, $value)
->dispatch();IPPanel
Elanak::send($messages)
->to($to)
->via($providerName)
->api($api)
->pattern($patternCode, $value)
->from($sender)
->dispatch();Change the provider simply by changing the via() argument:
->via('melipayamak')
->via('kavenegar')
->via('ippanel')
->via('payamresan')
->via('smsir')Contributions are welcome! Open an issue or submit a pull request to add a provider, fix a bug, or improve the documentation.
Distributed under the MIT License. See the LICENSE file for full terms.
Web developer & cheerful hacker · PHP · Laravel · Go
⭐ If Elanak made SMS easier in your project, consider giving it a star! ⭐