SMTP relay
Already sending through SMTP? Point your application, CMS or mail library at the SnappyMails relay — no code changes beyond the credentials.
Connection settings
The exact host, port and username for your brand are shown on the API Keys & SMTP page of the portal.
| Setting | Value |
|---|---|
| Host | smtp.snappymails.com (as shown in the portal) |
| Port | 2587 (default; your deployment may use another port shown in the portal) |
| Encryption | STARTTLS (required — connect in plain text, then upgrade) |
| Authentication | PLAIN or LOGIN |
| Username | The SMTP username shown in the portal (your brand identifier) |
| Password | An API key with the smtp:send permission (or a key with no permission restrictions) |
| Max message size | 180 KB including attachments |
Same rules as the API
From address must be on a verified sender domain, sends count towards the monthly quota (one per recipient), and the brand's rate limit applies. Messages sent via SMTP appear in the transactional logs with source smtp.Examples
These examples read the username from SNAPPYMAILS_SMTP_USER and the API key from SNAPPYMAILS_API_KEY.
// npm install nodemailer
import nodemailer from "nodemailer";
const transporter = nodemailer.createTransport({
host: "smtp.snappymails.com",
port: 2587,
secure: false, // upgraded with STARTTLS
requireTLS: true,
auth: {
user: process.env.SNAPPYMAILS_SMTP_USER, // username from the portal
pass: process.env.SNAPPYMAILS_API_KEY, // API key with smtp:send
},
});
const info = await transporter.sendMail({
from: '"Acme Shop" <orders@acme.com>',
to: "jane@example.com",
subject: "Your order A-1077 is confirmed",
text: "Thanks for your order!",
html: "<p>Thanks for your order!</p>",
});
console.log(info.response);SMTP responses
| Reply | Meaning | What to do |
|---|---|---|
250 | Message accepted and queued. | — |
451 4.7.1 | Rate limit exceeded. | Temporary: retry later (mail libraries and MTAs do this automatically). |
451 4.3.0 | Temporary server failure. | Retry later. |
452 4.5.3 | Monthly quota exceeded. | Upgrade the plan or add a pack. |
530 | Authentication required. | Authenticate after STARTTLS before MAIL FROM. |
535 5.7.8 | Authentication failed. | Check the username and that the key is valid and has smtp:send. |
553 5.7.1 | Sender domain not verified. | Verify the From domain in the portal. |
554 5.7.1 | Sending disabled for this account. | Contact support / check billing. |
Dedicated IPs & AWS SES Pools
By default, emails are dispatched via Amazon SES's high-reputation shared IP pool. Brands on Business or Enterprise plans can provision Dedicated IPs under Senders, Domains & Dedicated IPs. When a Dedicated IP is active or warming up, SnappyMails automatically routes your sender domain's traffic through your isolated AWS SES Configuration Set and Dedicated IP Pool while SES Auto-Warmup ramps daily volume over 30 days.
/v3/senders/ipsPermission smtp:sendcurl 'https://app.snappymails.com/v3/senders/ips' \
-H "api-key: $SNAPPYMAILS_API_KEY" \
-H 'Accept: application/json'{
"ips": [
{
"id": "b1c2d3e4-f5a6-4b7c-8d9e-0f1a2b3c4d5e",
"ip": "54.240.48.112",
"domain": "mail.acme.com",
"rdns": "a48-112.smtp-out.amazonses.com",
"weight": 100,
"ses_pool_name": "ses-pool-acme-1",
"status": "WARMING",
"warmup": {
"status": "IN_PROGRESS",
"percentage": 35
},
"associated_domains": ["mail.acme.com"]
}
]
}Tips
- Use a dedicated API key for each SMTP client so you can revoke it independently.
- Reuse connections when sending many messages; most libraries support connection pooling.
- Need template rendering,
paramsor batch sending? Use the HTTP API instead — SMTP messages are sent as-is.