SMTP Reply Codes
Look up SMTP reply codes and enhanced status codes, from 250 OK to 550 5.7.26, with what each means and what to do when a server returns it.
Free · No sign-up · Your inputs stay in your browser
Reference
SMTP reply codes
| Code | Meaning | What to do |
|---|---|---|
| 211 | System status | Reply to HELP or a status request. |
| 214 | Help message | |
| 220 | Service ready | The greeting when a connection opens. |
| 221 | Closing connection | Reply to QUIT. |
| 235 | Authentication succeeded | After AUTH (RFC 4954). |
| 250 | Requested action OK | Accepted. After DATA, the message is now the receiver's responsibility. |
| 251 | User not local; will forward | |
| 252 | Cannot verify user, will attempt delivery | Usual reply to VRFY, which servers disable to stop address harvesting. |
| 334 | Server challenge | During AUTH: the base64 prompt. |
| 354 | Start mail input | Send the message, end with <CRLF>.<CRLF>. |
| 421 | Service not available, closing | Temporary: the server is overloaded or shutting down. Retry later. |
| 450 | Mailbox unavailable (temporary) | Often greylisting: retry in a few minutes and it is accepted. |
| 451 | Local error in processing | Temporary server-side error, or a failed DNS check on your domain. |
| 452 | Insufficient storage / too many recipients | Temporary. Split the recipient list. |
| 454 | TLS not available | STARTTLS failed temporarily. |
| 455 | Server unable to accommodate parameters | |
| 500 | Syntax error, command unrecognised | Also returned for lines that are too long. |
| 501 | Syntax error in parameters | Often a malformed address in MAIL FROM or RCPT TO. |
| 502 | Command not implemented | |
| 503 | Bad sequence of commands | For example RCPT before MAIL, or AUTH required first. |
| 504 | Parameter not implemented | |
| 521 | Host does not accept mail | RFC 7504: the domain never accepts mail (null MX). |
| 530 | Authentication required | Submission port without AUTH, or STARTTLS required first. |
| 534 | Authentication mechanism too weak | Gmail's reply when an app password or OAuth is needed. |
| 535 | Authentication credentials invalid | Wrong username or password. |
| 550 | Mailbox unavailable (permanent) | No such user, or rejected by policy (5.7.1). Remove the address or fix authentication. |
| 551 | User not local | |
| 552 | Exceeded storage allocation | Mailbox full or message too large. |
| 553 | Mailbox name not allowed | Malformed address, or the sender is not allowed to use this From. |
| 554 | Transaction failed | Permanent rejection, often spam or a blocklisted IP; the text says which. |
| 556 | Domain does not accept mail | RFC 7504. |
| 5.1.1 | Bad destination mailbox | Enhanced status (RFC 3463): the user does not exist. Suppress the address. |
| 5.2.2 | Mailbox full | |
| 5.7.1 | Delivery not authorised | Policy rejection: SPF, DMARC, a blocklist or a relay attempt. |
| 5.7.26 | Unauthenticated email | Gmail: the message failed SPF and DKIM, or DMARC. |
| 4.7.0 | Temporary policy failure | Often rate limiting or a TLS problem. Retry. |
The first digit decides retry behaviour: 2 is success, 3 asks for more input, 4 is temporary and the sender retries, 5 is permanent and the message bounces. Enhanced status codes (x.y.z, RFC 3463) refine the reason and appear after the three-digit code.
About this tool
Method, assumptions, practical next steps, and limits.
Read the first digit
2xx is success, 3xx asks for more input (after DATA), 4xx is a temporary failure the sending server retries for hours or days, and 5xx is permanent and produces a bounce. The basic codes come from RFC 5321 and the enhanced codes from RFC 3463.
The text matters too
Providers add a human-readable explanation and often a link after the code. 550 alone means "rejected"; the text says whether the reason was a missing mailbox, a blocklisted IP, a failed DMARC check or the sending rate.