Configure your organization to send transactional email through Lumail from SMTP-only tools.
Use Lumail's SMTP endpoint when an application can only send email through SMTP and cannot call POST /api/v1/emails directly. Common examples include auth providers, billing tools, no-code platforms, and legacy backends.
SMTP messages are treated as transactional by default. They use the same priority delivery lane as the transactional email API, so auth codes, magic links, password resets, and operational emails are not queued behind newsletter or campaign batches.
Use SMTP for:
Do not use the SMTP endpoint for newsletters, broadcasts, or marketing campaigns. Use Lumail campaigns and workflows for bulk sending so unsubscribes, segmentation, scheduling, and campaign reporting stay correct.
Before configuring SMTP, the organization needs:
587.From address on the verified domain.The API token and the verified domain must belong to the same Lumail organization.
The From address must use a verified email domain in Lumail.
yourdomain.com.If your verified domain is yourdomain.com, valid sender examples include:
[email protected]
[email protected]
[email protected]
Lumail rejects SMTP messages when the From address does not belong to a verified email domain in the same organization as the API token.
The SMTP password is a Lumail API token, not your Lumail account password.
Production SMTP.The token starts with lum_.
Use these settings in your external application:
| Setting | Value |
|---|---|
| Host | smtp.lumail.io |
| Port | 587 |
| Security | STARTTLS |
| Username | Your organization slug, or any label |
| Password | Your Lumail API token |
| From | An address on a verified Lumail domain |
| To | The recipient address for the notification |
The username is used as a label in SMTP logs. The password is what authenticates the request.
For Supabase Auth custom SMTP, configure:
Host: smtp.lumail.io
Port: 587
Security: STARTTLS
Username: your-org-slug
Password: lum_your_api_token
Sender email: [email protected]Use the same sender address in Supabase email templates. The sender domain must already be verified in Lumail.
import nodemailer from "nodemailer";
const transport = nodemailer.createTransport({
host: "smtp.lumail.io",
port: 587,
secure: false,
requireTLS: true,
auth: {
user: "your-org-slug",
pass: process.env.LUMAIL_API_TOKEN,
},
});
await transport.sendMail({
from: "Auth Team <[email protected]>",
to: "[email protected]",
subject: "Your login code",
text: "Your login code is 123456.",
});You can test the SMTP endpoint with swaks:
swaks \
--server smtp.lumail.io \
--port 587 \
--tls \
--auth LOGIN \
--auth-user your-org-slug \
--auth-password lum_your_api_token \
--from [email protected] \
--to [email protected] \
--header "Subject: Lumail SMTP test" \
--body "This email was sent through Lumail SMTP."A successful response ends with:
250 Queued 1 message(s)That means Lumail accepted the email and queued it on the transactional priority lane. Final inbox placement still depends on the receiving mailbox and downstream delivery provider.
| Behavior | Default |
|---|---|
| Delivery lane | Transactional priority |
| Recipients | 1 recipient per SMTP message |
| Attachments | Rejected |
| Size limit | 1 MB |
| Link tracking | Disabled |
| Open tracking | Disabled |
| Content format | HTML is preserved when present; otherwise text is sent as Markdown |
Send one SMTP message per recipient. If your application needs bulk sending, use Lumail campaigns or workflows instead.
| SMTP response | Meaning | Fix |
|---|---|---|
535 | Invalid API token | Check the token starts with lum_ and has not been deleted |
530 | Authentication required | Enable SMTP AUTH in your application |
550 | Invalid sender, recipient, or message | Verify the From domain and message content |
552 | Message too large or attachment rejected | Keep the message under 1 MB and remove attachments |
452 | Temporary quota, rate, or plan issue | Retry later or check organization limits |
451 | Lumail API temporarily unavailable | Retry with exponential backoff |
If your provider asks for SSL/TLS on port 465, choose STARTTLS on port 587 instead. Lumail's SMTP endpoint is exposed on 587.
From address