eusend
SMTP

SMTP

Send through eusend over SMTP instead of the HTTP API — a drop-in transport for anything that already speaks SMTP, from WordPress and Supabase to Django, Laravel, and Rails.

Send through eusend over SMTP instead of the HTTP API — a drop-in transport for anything that already speaks SMTP: WordPress, Supabase Auth, Django, Laravel, Rails, Ghost, and most off-the-shelf software. Messages submitted over SMTP run through the exact same pipeline as the API, so DKIM signing, open and click tracking, suppression, and your sending limits all apply identically.

Connection settings

ParameterTypeDescription
Hostrequiredsmtp.eusend.devThe SMTP submission server.
Portrequired465Implicit TLS (SMTPS) — the connection is encrypted from the first byte. STARTTLS (587) and plain SMTP (25) are not supported.
SecurityrequiredSSL / TLSImplicit TLS on 465. Not STARTTLS. Choose "SSL" or "TLS" if your client asks.
UsernamerequiredeusendAlways the literal string "eusend" — not your email address and not your key.
Passwordrequiredeu_live_… / eu_test_…Any of your eusend API keys. The key goes in the password field.

The username is always the literal word eusend; your API key goes in the password field. Putting the key in the username is the most common cause of a 535 authentication failure.

Integration guides

Step-by-step setup for the most common platforms. Every one uses the same host, port, username, and password above — only the location of the settings screen differs.

The sender address

The message From address must use a domain you have verified in eusend — the same rule as the API. Mail from an unverified domain is rejected at submission with a 535 carrying the reason in its text. The local part (before the @) can be anything. See Domain Setup to add and verify a domain.

Test and live keys

A key prefixed eu_test_ is accepted and tracked but never delivered — ideal while you wire up an integration. Swap in an eu_live_ key to send for real.

Quick check — swaks (CLI)

Before wiring SMTP into an application, confirm your key and sender domain work with a one-line send from the terminal:

shell
swaks \
  --server smtp.eusend.dev:465 --tlsc \
  --auth-user eusend --auth-password eu_live_xxxxxxxxxxxx \
  --from hello@yourdomain.com \
  --to alice@example.com \
  --header 'Subject: SMTP test' \
  --body 'Hello from eusend over SMTP.'

Limits and behavior

ParameterTypeDescription
Recipientsmax 50 eachUp to 50 addresses each across To, Cc, and Bcc.
Message sizemax 15 MBThe whole message on the wire, MIME encoding included. Larger messages are rejected with a 552.
Attachmentsmax 20, 10 MBUp to 20 attachments, 10 MB combined once decoded — the same limits as the API. Over either one, the message is rejected with a 552 rather than delivered without the files.
Sending limitssharedThe same rate limit, monthly plan limit, and progressive daily sending ceiling as the HTTP API apply to SMTP submissions.
Tracking & eventsidenticalOpens, clicks, bounces, complaints, and suppression all apply — an SMTP send appears in your dashboard and analytics like any other email.

Troubleshooting

ParameterTypeDescription
535auth or sender rejectedWrong username or invalid key — the username must be the literal "eusend" and the API key goes in the password field. An unverified From domain also lands here, so read the response text before assuming the credentials are wrong.
550rejectedThe message itself was refused — every recipient is on your suppression list, or the content failed validation.
452rate limitedA rate limit or your daily sending ceiling was hit. Retry later.
421temporaryTemporary server error or too many simultaneous connections — retry with backoff.