> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.mysmtp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SMTP Status Codes and Their Meanings

> Learn what common SMTP response codes mean, from 2xx success codes to 5xx permanent failures, with an example transaction walkthrough.

SMTP response codes are three-digit numbers that indicate the status of an email transaction. The first digit defines the response category:

* **1xx** – Informational (not commonly used in SMTP)
* **2xx** – Success (The request was successfully processed)
* **3xx** – Redirection (Additional action required)
* **4xx** – Temporary failure (The request failed, but retry may succeed)
* **5xx** – Permanent failure (The request failed, do not retry)

Here’s a breakdown of common SMTP status codes:

## 2xx – Success Codes

These indicate that the email transaction was successfully processed.

* **200** – Nonstandard success response (rarely used).
* **211** – System status or help reply (provides server info).
* **214** – Help message (returns helpful information).
* **220** – SMTP server ready (indicates the server is ready to process requests).
* **221** – SMTP server closing connection (indicates the session is ending).
* **250** – Requested action completed successfully (most common success response).
* **251** – Recipient not local, will forward (email will be relayed to another domain).

## 3xx – Intermediate/Redirection Codes

These codes indicate that the server expects further input from the client before completing the request.

* **334** – Server response to an authentication request (challenges the client for credentials).
* **354** – Start mail input (indicates the server is ready to receive the email body).

## 4xx – Temporary Failures

These errors indicate a transient issue that may resolve itself. The sender should retry later.

* **400** – Generic temporary error.
* **421** – Service not available (server is shutting down or overloaded).
* **450** – Requested action not taken because the recipient’s mailbox is unavailable (e.g., mailbox full).
* **451** – Requested action aborted due to a server error (e.g., system overload).
* **452** – Insufficient system storage (server cannot process the email due to lack of resources).

## 5xx – Permanent Failures

These indicate a permanent error, meaning the request cannot be fulfilled. The sender should not retry.

* **500** – Syntax error (server did not recognize the command).
* **501** – Syntax error in parameters (invalid email address or malformed command).
* **502** – Command not implemented (server does not support the requested command).
* **503** – Bad sequence of commands (commands sent in the wrong order).
* **504** – Command parameter not implemented (server does not recognize a specific parameter).
* **550** – Mailbox unavailable (e.g., recipient does not exist).
* **551** – User not local (server cannot relay the message).
* **552** – Mailbox full (message storage limit exceeded).
* **553** – Invalid recipient address (email address incorrect or malformed).
* **554** – Transaction failed (email rejected, often due to spam filters or security policies).

## Example SMTP Transaction with Status Codes

```plaintext theme={null}
S: 220 mail.example.com SMTP server ready
C: HELO client.example.com
S: 250 mail.example.com Hello client.example.com
C: MAIL FROM:<sender@example.com>
S: 250 OK
C: RCPT TO:<recipient@example.com>
S: 250 OK
C: DATA
S: 354 Start mail input
C: (Message content)
C: .
S: 250 OK, message accepted for delivery
C: QUIT
S: 221 Goodbye
```

Get more indepth information on all SMTP codes here: [https://smtp.codes/](https://smtp.codes/)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.