Every SMTP command gets a reply with 3 digits. Your MTA (Mail Transfer Agent) reads that code to decide what to do next. The first digit tells you almost everything:

  • 2xx: success. Move to the next step.
  • 3xx: accepted, but something is missing. After DATA, a 354 means "send the message body".
  • 4xx: temporary failure. Keep the email in the queue and try again later.
  • 5xx: permanent failure. Do not repeat the same request.

The classic confusion is 3xx vs 4xx. A 3xx means the conversation is moving forward. A 4xx means "not now".

Many servers also send an extended code, like 550 5.1.1:

  • 5: permanent failure
  • .1: address problem
  • .1: the mailbox does not exist

One more detail: a 250 does not prove the email reached the inbox. It means the server accepted the message. It can still land in spam.

Which SMTP code has given you the most trouble?