- HOME
- Email sending
- SMTP commands and common response codes in ZeptoMail
SMTP commands and common response codes in ZeptoMail
- Published : December 30, 2025
- Last Updated : December 30, 2025
- 5 Views
- 4 Min Read
Just like humans use languages, expressions, and cues to communicate, servers have their own way of talking to each other. For email servers, that language is the Simple Mail Transfer Protocol (SMTP). Every time an email travels from a sender to a recipient, servers exchange specific commands and response codes to make the delivery happen smoothly.
In our earlier articles, we covered what SMTP is, how it works, and what goes on behind the scenes. In this guide, we’ll go a layer deeper into the actual commands and error codes that shape the language SMTP servers use to communicate.

What is an SMTP command?
An SMTP command is a short instruction sent from an email client (like an application or mail server) to the receiving mail server during an email transaction.
These commands tell the server what to do next. It helps to identify the sender, specify the recipient, start sending the message content, end the session, and more.
A few characteristics of SMTP commands:
They’re text-based instructions.
Each command has a specific purpose in the mail transfer workflow.
They’re followed by server responses, which confirm whether the operation was successful or needs correction.
Common SMTP commands and their meanings
Command | Meaning | When is it used? |
HELO | Introduces the client to the server with its domain name. | At the start of an SMTP session. |
EHLO | Extended version of HELO. It also asks for server capabilities. | Preferred in modern SMTP sessions supporting ESMTP. |
MAIL FROM: | Indicates the email sender’s address. | Before specifying recipients. |
RCPT TO: | Specifies the recipient’s email address. | Repeated for each recipient. |
DATA | Signals the server that the client is ready to send the message content. | After sender and recipient information is provided. |
RSET | Resets the current session without closing the connection. | When the client wants to start the mail transaction over. |
VRFY | Requests server to validate a username or email address. | Not widely supported due to privacy or security concerns. |
NOOP | Performs no action but tests server availability. | Keeps the connection alive. |
QUIT | Terminates the SMTP session. | End of the transaction. |
What are SMTP response codes?
SMTP response codes are three-digit responses returned by a mail server to indicate the status of an email transaction. Every time an SMTP command is sent, the server replies with a code that explains whether the request was successful, requires more information, or encountered a temporary or permanent problem.
These codes help identify issues like invalid email addresses, authentication failures, server downtime, or delivery blocks. Understanding SMTP error codes makes troubleshooting faster and ensures smoother, more reliable email delivery.
Common SMTP response codes and their meanings
Now that we've seen what SMTP codes do, let's quickly look at this table of frequently encountered SMTP codes and what they indicate.
How to read SMTP codes:
1xx → Server error
2xx → Success
3xx → Further information required
4xx → Temporary failure
5xx → Permanent failure
1xx → Server error
This means there is an error from the server side.
Code | Meaning | What does it indicate? |
101 | Server unable to connect | The server is temporarily unable to establish a connection due to network issues or wrong server name/connection port. |
2xx → Success
These mean the command was accepted and processed successfully.
Code | Meaning | What does it indicate? |
211 | System status | The server is responding with system info or help details. |
214 | Help message | The server is providing help documentation for commands. |
220 | Service ready | The SMTP server is ready to establish a TCP connection. |
221 | Service closing | The server closes the connection. |
235 | Authentication successful | The user has successfully authenticated. A response to AUTH command. |
250 | Requested action completed | The requested command completed successfully (common response code after MAIL FROM, RCPT TO commands). |
251 | User is not local, message will forward | The recipient isn’t local, but the server will forward to the provided forward path. |
252 | Cannot verify user, will accept and attempt delivery | The server can’t verify the recipient but will still attempt the message and attempt for delivery. This is a response to VRFY command. |
3xx → Further information required
The server needs more information to continue.
Code | Meaning | What does it indicate? |
334 | Security mechanism | The server is requesting authentication credentials. This is usually sent as a response to the AUTH command. |
354 | Start mail input | The server is ready to receive the email content after DATA. |
4xx → Temporary failure
These are retryable errors. The issue may resolve automatically.
Code | Meaning | What does it indicate? |
421 | Service not available | The server is temporarily unavailable (overload, maintenance). |
422 | Mailbox full | The recipient’s mailbox has exceeded the storage limit |
431 | File overload | The domain has been temporarily overloaded due to high message volume. |
441 | Connection timed out | The network or connection timeout occurred in the recipient's server. |
442 | Connection dropped | The SMTP connection was unexpectedly closed. |
446 | Routing loop detected | A message routing issue caused a loop. |
450 | Mailbox unavailable | The recipient mailbox is temporarily unavailable, busy, or blocked. |
451 | Local error in processing | The server encountered an internal error and could not process the command. |
452 | Insufficient system storage | The server lacks storage to process the message. |
454 | Temporary authentication failure | Authentication failed temporarily; retry later. |
455 | Server unable to process command | A temporary server-side issue. |
471 | Message temporarily rejected | Often due to spam filtering or IP reputation issues. |
5xx → Permanent failure
These are non-retryable errors unless the issue is fixed.
Code | Meaning | What does it indicate? |
500 | Syntax error | The command is malformed or unrecognized by the server. |
501 | Invalid parameters | Incorrect command parameters. |
502 | Command not implemented | The server does not support this command. |
503 | Bad command sequence | Commands were sent in a wrong sequence. |
504 | Command parameter not implemented | The parameter is not supported by the server. |
510 | Invalid email address | The recipient address is invalid. |
512 | Host/domain not found | The recipient domain does not exist. |
523 | Encryption required | The server requires a secure connection (TLS). |
530 | Authentication required | The server requires authentication before sending. |
535 | Authentication failed | Invalid username or password. |
538 | Encryption required for authorization | Authentication requires TLS encryption. |
541 | Message rejected | The email is blocked due to policy or content restrictions. |
550 | Mailbox unavailable | The recipient does not exist or is blocked. |
551 | User not local | The recipient does not exist on this server. |
552 | Storage allocation exceeded | The recipient mailbox is full (permanent). |
553 | Mailbox name not allowed | Invalid email address format. |
554 | Transaction failed | The message was rejected due to spam or policy reasons. |
555 | Invalid address syntax | Incorrect recipient address format. |
SMTP session example
Server: 220 (Service ready)
Client: EHLO (yourdomain.com)
Server: 250 OK (server capabilities listed)
Client: MAIL FROM:<sender@example.com>
Server: 250 OK
Client: RCPT TO:<recipient@example.com>
Server: 250 OK
Client: DATA
Server: 354 (Start mail input)
Client: . (Client sends message body ending with a single period)
Server: 250 (Message accepted)
Client: QUIT
Server: 221 (Service closing connection)Wrapping up
SMTP commands and error codes are the foundation of how email servers communicate. Understanding them helps you see what’s happening behind every email sent. With a reliable SMTP service like Zoho ZeptoMail, these responses are easier to understand. ZeptoMail's clear error messages, detailed reports, and delivery insights help teams troubleshoot faster. ZeptoMail also ensures consistent transactional email delivery at scale.

