Download the PHP package maatify/channel-delivery without Composer
On this page you can find all versions of the php package maatify/channel-delivery. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download maatify/channel-delivery
More information about maatify/channel-delivery
Files in maatify/channel-delivery
Package channel-delivery
Short Description Maatify Channel Delivery — Standalone async multi-channel delivery microservice (Email, Telegram, SMS, Push...)
License MIT
Homepage https://github.com/Maatify/channel-delivery
Informations about the package channel-delivery
Maatify Channel Delivery
Overview
Maatify Channel Delivery is a standalone async multi-channel delivery microservice for sending notifications across channels like Email, Telegram, SMS, and Push.
It offloads delivery processing from your core applications, ensuring:
- High availability
- Background delivery processing
- Retry mechanisms
- Secure payload encryption
- Controlled API ingestion
Currently, the Email channel is fully implemented and production-ready. Additional channels such as SMS, Telegram, and Push notifications are planned for future releases.
Features
-
Async Multi-Channel Queue Process notifications asynchronously using background workers.
-
Encrypted Payloads Built-in
AES-256-GCMencryption for recipients and message contexts viamaatify/crypto. -
Template Rendering Uses Twig to render dynamic email templates safely.
-
Reply-To Support Optional
reply_tofield for admin notification emails — email goes to the admin, replies go to the customer. -
Robust Delivery Exponential retry strategy for transient delivery failures.
-
API Key & IP Whitelisting Secure ingestion endpoints allowing only trusted origin servers.
-
Rate Limiting Redis-backed sliding window rate limiter to prevent abuse.
- Containerized Dependency Injection Built on Slim 4 + PHP-DI for modular and testable architecture.
Architecture
The system operates as an API ingestion layer combined with background workers.
Applications enqueue notification jobs via HTTP. Workers then process the queue and deliver messages asynchronously.
The email delivery pipeline is powered internally by the
maatify/email-delivery
library, which provides the rendering, transport abstraction,
and delivery engine.
Email Delivery Pipeline
Detailed processing steps:
-
Enqueue Client calls
/api/v1/email/enqueue. -
Encryption
EnqueueEmailHandlerencrypts recipient and context viaMaatify\Crypto. -
Persistence Job stored securely in
cd_email_queue. -
Worker Polling
EmailQueueWorkerpolls pending jobs. -
Template Rendering Context is decrypted and injected into Twig templates.
- SMTP Delivery
Email is sent via
SmtpEmailTransport. IfreplyTowas set, aReply-Toheader is added so replies go to the specified address.
Requirements
- PHP 8.2+
- MySQL / MariaDB
- Redis
- SMTP server
- Composer
Related Projects
maatify/email-delivery– email delivery enginemaatify/crypto– encryption layer
Installation
Clone the repository or install via Composer:
Install dependencies:
Configuration
Create the environment configuration file:
Edit .env and configure the following variables.
Application
| Variable | Description |
|---|---|
APP_ENV |
Application environment (development / production) |
APP_NAME |
Name of the service instance |
SUPPORT_EMAIL |
Support contact email |
Database
| Variable | Description |
|---|---|
DB_HOST |
Database host |
DB_PORT |
Database port |
DB_DATABASE |
Database name |
DB_USERNAME |
Database username |
DB_PASSWORD |
Database password |
Example:
Encryption (Crypto)
Queue payloads and sensitive data are encrypted using AES-256-GCM through maatify/crypto.
| Variable | Description |
|---|---|
CRYPTO_ACTIVE_KEY_ID |
Identifier of the active encryption key |
CRYPTO_KEYS |
JSON array containing encryption keys |
Example:
Key requirements:
- Key must be exactly 32 bytes
- Keys support rotation
- Old keys remain for decryption only
Generate a secure 32-byte key:
This will generate a 32-character string, for example:
Then place it inside the .env configuration:
Key requirements:
- Must be exactly 32 characters
- Used as the symmetric encryption key for AES-256-GCM
- Keys support rotation
SMTP
SMTP configuration used by the email delivery worker.
| Variable | Description |
|---|---|
MAIL_HOST |
SMTP server host |
MAIL_PORT |
SMTP server port |
MAIL_USERNAME |
SMTP username |
MAIL_PASSWORD |
SMTP password |
MAIL_FROM_ADDRESS |
Default sender email |
MAIL_FROM_NAME |
Sender display name |
MAIL_ENCRYPTION |
Encryption type (tls / ssl) |
MAIL_TIMEOUT |
SMTP timeout (seconds) |
MAIL_DEBUG |
SMTP debug mode (0 = disabled) |
Redis
Redis is used for rate limiting.
| Variable | Description |
|---|---|
REDIS_HOST |
Redis host |
REDIS_PORT |
Redis port |
REDIS_PASSWORD |
Redis password (optional) |
REDIS_DB |
Redis database index |
RATE_LIMIT_MAX_REQUESTS |
Maximum requests allowed |
RATE_LIMIT_WINDOW_SECONDS |
Rate limit window duration |
TRUSTED_PROXIES |
Trusted proxy IPs (for X-Forwarded-For) |
Example:
Quick Examples
Customer-facing email
Enqueue a transactional email (e.g., welcome, OTP, verification) sent to the customer:
Admin notification with Reply-To (v1.1.0+)
Enqueue an admin notification where the email goes to the admin, and replies go to the customer:
Worker Usage
Run the email worker:
This worker should normally run under a process manager like Supervisor or systemd.
See the worker setup guide:
Run Worker Guide
Documentation
- Run Worker Guide
- Send Email Guide
- API Documentation: Email Enqueue
- Basic Usage Example
License
This project is open-sourced software licensed under the MIT License.
See the LICENSE file for details.
All versions of channel-delivery with dependencies
ext-curl Version *
ext-json Version *
ext-openssl Version *
ext-pdo Version *
ext-redis Version *
ext-sodium Version *
ext-zlib Version *
maatify/crypto Version ^1.0
maatify/email-delivery Version ^1.0
maatify/psr-logger Version ^1.0
maatify/shared-common Version ^1.0
php-di/php-di Version ^7.1
php-di/slim-bridge Version ^3.0
phpmailer/phpmailer Version ^6.9
psr/http-message Version ^2.0
psr/http-server-handler Version ^1.0
psr/http-server-middleware Version ^1.0
psr/log Version ^3.0
slim/psr7 Version ^1.8
slim/slim Version ^4.15
twig/twig Version ^3.0
vlucas/phpdotenv Version ^5.6