Email & SMTP Transport
High-throughput transactional email delivery via Postal SMTP connection pooling and dynamic sender handles.
Sendrin provides dedicated transactional email delivery backed by a self-hosted Postal SMTP relay cluster with connection pooling and TLS encryption.
⚡ Integrate with AI1. Default Shared Sender Handle
By default, every application receives a dedicated email address on the shared IITDeveloper domain:
{application_slug}@iitdeveloper.comFor example, an application named "Acme Billing" with slug acme-billing dispatches from:
"Acme Billing" <acme-billing@iitdeveloper.com>To send from your own domain (e.g. billing.acme.com), see Custom Sending Domains & DKIM.
2. Dispatching an Email (POST /api/v1/notifications)
Sendrin utilizes template-driven events. Specify your registered event_key, the target email inside the recipient object, and variables matching your template schema in data. Always provide a unique Idempotency-Key header.
curl -X POST "https://api.gns.iitdeveloper.com/api/v1/notifications" \
-H "Authorization: Bearer gns_live_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 1f8e21a0-4b39-4c28-98e1-58291df930b1" \
-d '{
"event_key": "statement_ready",
"channel": "email",
"recipient": {
"email": "customer@acme.com"
},
"data": {
"customer_name": "Taylor",
"invoice_number": "INV-4029",
"statement_url": "https://acme.com/invoices/4029"
}
}'3. Asynchronous Acceptance (202 Accepted)
The endpoint responds with 202 Accepted indicating that the notification has been validated and persisted to the transactional outbox:
4. Postal Connection Pooling & Delivery Lifecycle
Sendrin utilizes an asynchronous SMTP connection pool configured via environment variables:
- Keep-Alive Pool: Reuses warm SMTP connections to eliminate TLS handshake latency.
- Failover Queue: Transient relay errors trigger exponential backoff retries via Celery background tasks.
- Strict TLS: Enforces STARTTLS encryption across all outbound relays.
Track email transmission states (queued → processing → delivered / failed) in the Sendrin Console activity feed or subscribe to Outbound Webhooks.