The classic SMTP error code consists of three digits (e.g. 220 mail.domain.tld SMTP ready.). The ESMTP status codes are additions to the classic code and consist of digits devided by dots (5.1.1 User unknown.). Many times you see both types of code combined (e.g. 550 5.1.1 User unknown). Find below a list of the most common codes:
2xx Request ok. Go ahead.
220 Mail service is running (ESMTP ready).
221 2.0.0 Closing connection (Mail received successfully, Goodbye).
250 2.0.0 Message accepted for delivery
250 2.1.0 Sender e-mail address ok.
250 2.1.5 Recipient e-mail address ok.
3xx Request ok, but more input is needed to complete the action successfully.
354 Enter mail, end with CRLF.CRLF
4xx Temporary error, try again.
421 4.2.1 The service is not available and the connection will be closed.
441 4.4.1 Cannot connect to remote host (host has DNS entry, but can’t be connected to).
450 4.5.0 Mailbox temporarily unavailable.
451 4.1.8 Sender e-mail address domain does not resolve temporarily.
451 4.7.1 Greylisting in action, please come back later.
454 4.7.0 TLS not available due to local problem. Please try again later.
5xx Permanent error. Don’t try again.
500 5.5.1 Syntax error, command unrecognized.
503 5.5.0 Sender e-mail address already specified.
503 5.5.1 Need MAIL before RCPT.
544 5.4.4 Host not found (not in DNS).
550 5.1.1 Mailbox does not exist.
550 5.1.3 Bad e-mail address syntax.
550 5.7.0 Your IP address is in a blacklist.
553 5.1.8 Sender e-mail address domain does not exist.
554 5.7.1 Relaying denied