Email

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.

SettingValue
Hostsmtp.snappymails.com (as shown in the portal)
Port2587 (default; your deployment may use another port shown in the portal)
EncryptionSTARTTLS (required — connect in plain text, then upgrade)
AuthenticationPLAIN or LOGIN
UsernameThe SMTP username shown in the portal (your brand identifier)
PasswordAn API key with the smtp:send permission (or a key with no permission restrictions)
Max message size180 KB including attachments

Same rules as the API

The 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

ReplyMeaningWhat to do
250Message accepted and queued.—
451 4.7.1Rate limit exceeded.Temporary: retry later (mail libraries and MTAs do this automatically).
451 4.3.0Temporary server failure.Retry later.
452 4.5.3Monthly quota exceeded.Upgrade the plan or add a pack.
530Authentication required.Authenticate after STARTTLS before MAIL FROM.
535 5.7.8Authentication failed.Check the username and that the key is valid and has smtp:send.
553 5.7.1Sender domain not verified.Verify the From domain in the portal.
554 5.7.1Sending 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.

GET/v3/senders/ipsPermission smtp:send
curl 'https://app.snappymails.com/v3/senders/ips' \
  -H "api-key: $SNAPPYMAILS_API_KEY" \
  -H 'Accept: application/json'
200 OK
{
  "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, params or batch sending? Use the HTTP API instead — SMTP messages are sent as-is.