Send via SMTP Email Relay

Email Relay rejection code reference

Look up the SMTP replies Email Relay sends to your mail server, tell temporary rejections from permanent ones, and know when you need to act.

Email Relay answers your mail server with SMTP codes, not with JSON. Those codes appear in your own mail server's log, not in the CloudFly console.

To start from a symptom instead, see Email Relay troubleshooting.

Read the first digit first

This is the most important thing on the page, and the most commonly misread.

Code groupMeaningWhat your mail server does
2xxAcceptedRemoves the message from its queue and considers it done
4xxTemporary rejectionHolds the message and retries, typically for 24–48 hours
5xxPermanent rejectionDrops the message and sends a failure report to the sender

Most 4xx replies need no action from you — your mail server handles them. A 5xx always does: the message is gone and the sender has already been notified.

Code 250 does not mean delivered

250 only says CloudFly accepted the message and took over responsibility for forwarding it. Delivery to the recipient's mailbox happens afterwards and can still fail. The final outcome is on the Stats & logs screen.

Rejected at sign-in

CodeTextCause
535Authentication failedWrong username or wrong key

The username is always the literal word apikey — that exact string, not your email address. The password is an SMTP key in the form cfr_….

A key is shown once, when it is created. If it was not saved, create a new one; there is no way to look it up.

See Create an SMTP key.

Rejected when declaring the sender

Reply textGroupCause
DOMAIN_NOT_VERIFIED5xxThe sender address's domain is not active, does not exist, or belongs to a different service
DAILY_QUOTA_EXCEEDED4xxThe daily message allowance is used up
INTERNAL_ERROR4xxA temporary fault on our side
relay backend unavailable4xxThe checking system could not be reached

Note the contrast here, because it decides whether your message survives:

  • Quota exhaustion is temporary. Your mail server holds the message and retries. When the day rolls over the allowance resets and the message goes on its own. Usually nothing for you to do.
  • An unverified domain is permanent. The message bounces immediately. Once you finish verification you must send again from scratch; bounced messages do not resume.

Rejected when declaring a recipient

Reply textGroupCause
RECIPIENT_SUPPRESSED5xxThe address is on the suppression list
RECIPIENT_PLATFORM_SUPPRESSED5xxThe address does not exist — verified and blocked for every customer
TOO_MANY_RECIPIENTS4xxMore than 50 recipients on one message

RECIPIENT_SUPPRESSED rejects only that address. The other recipients of the same message are still accepted.

An address lands on the suppression list because an earlier message to it bounced permanently, or because the recipient reported spam. Continuing to send to dead addresses damages the sending reputation of the whole domain, so this is protection rather than obstruction. See Read and manage the suppression list.

TOO_MANY_RECIPIENTS is deliberately a temporary rejection, so your mail server holds the message instead of bouncing it to the sender. Retrying still exceeds the limit, though — the fix is on your side: split it into several messages of at most 50 addresses each.

Rejected because the system is loaded

CodeGroupCause
4514xxThe sending queue is deep and the system is pushing load back to you
too many connections4xxToo many simultaneous connections from your side

Both are temporary and clear on their own. Your mail server retries and the message goes.

Only report it if you see it continuously for hours — at that point it is no longer a passing spike.

Rejected because the message is too large

As soon as your mail server connects, CloudFly announces the 25 MB ceiling. Standards-compliant software stops there and never uploads the message.

Oversized messages are rejected permanently, because retrying does not make a message smaller. Reduce the attachments, or host the file for download and send a link.

Quick lookup

What you see in the logWhat to do
535Fix the username or key, then restart the sending process
DOMAIN_NOT_VERIFIEDVerify the domain, then resend the bounced messages
RECIPIENT_SUPPRESSEDCheck the address; only Added manually rows can be removed by you — hard-bounce and complaint rows need support
RECIPIENT_PLATFORM_SUPPRESSEDVerified as non-existent. You cannot remove it — contact support if you are sure it is live
TOO_MANY_RECIPIENTSSplit the message, at most 50 addresses each
DAILY_QUOTA_EXCEEDEDNothing; if it happens often, ask for a higher quota
451 or too many connectionsNothing
Message too largeReduce the attachments

Your account's real quota is on the Overview screen — see Read the overview page of each service. The ceiling for one message is in the size limit block on the SMTP configuration page.