Send transactional email through Lumail from SMTP-only tools
Lumail exposes an SMTP submission endpoint for tools that cannot call the HTTP API directly. It is intended for low-volume transactional email such as auth codes, magic links, password resets, and operational messages.
If you are setting this up for an organization, start with the SMTP transactional email tutorial. It covers verified domains, API tokens, provider settings, and test sends.
For systems that support HTTP hooks, prefer POST /api/v1/emails. The HTTP API has a clearer request/response model and is easier to debug. The SMTP endpoint exists for compatibility with SMTP-only providers.
Under the hood, the SMTP endpoint is a thin adapter: it authenticates with your Lumail API token, parses the SMTP/MIME message, then forwards the request to POST /api/v1/emails. The HTTP API remains responsible for token validation, verified sending-domain checks, quotas, and priority queueing.
| Setting | Value |
|---|---|
| Host | smtp.lumail.io |
| Port | 587 |
| Security | STARTTLS |
| Username | Any non-empty value, for example your org slug |
| Password | A Lumail API token from Settings -> API Tokens |
The username is used as a log label. The password must be a Lumail API token. The From address must use a verified Lumail sending domain in the same organization as the API token.
SMTP messages are treated as transactional by default. They are queued on Lumail's transactional priority QStash lane, separate from campaign and newsletter batches.
The default queue lane capacity is 40 emails per second for priority messages and 40 emails per second for bulk campaign messages. This separation prevents a large newsletter send from blocking OTP or magic-link delivery.
| Rule | Default |
|---|---|
| Recipients | 1 recipient per SMTP message |
| Attachments | Rejected |
| Size limit | 1 MB |
| Tracking | Link and open tracking disabled by default |
| Content | HTML is preserved when present; otherwise text is sent as Markdown |
Supabase Auth can send email through a custom SMTP provider. Configure it with:
Host: smtp.lumail.io
Port: 587
Security: STARTTLS
Username: your-org-slug
Password: lum_your_api_token
Sender email: [email protected]If you can use Supabase's Send Email hook instead, prefer the hook and call POST /api/v1/emails from your endpoint. It gives you structured errors and avoids SMTP parsing.
| Response | Meaning |
|---|---|
250 | Message accepted and queued by Lumail |
535 | Invalid Lumail API token |
530 | Authentication required |
550 | Invalid sender, recipient, or message |
552 | Message too large or attachment rejected |
452 | Temporary queue, quota, or plan-limit issue |
451 | Lumail API temporarily unavailable |
Lumail returns 250 only after the transactional priority queue accepts the message.
From domain