Once the transmission channel is established, the SMTP-sender sends a MAIL command indicating the sender of the mail. If the SMTP-receiver can accept mail it responds with an OK reply. The SMTP-sender then sends a RCPT command identifying a recipient of the mail. If the SMTP-receiver can accept mail for that recipient it responds with an OK reply; if not, it responds with a reply rejecting that recipient (but not the whole mail transaction). The SMTP-sender and SMTP-receiver may negotiate several recipients. When the recipients have been negotiated the SMTP-sender sends the mail data, terminating with a special sequence. If the SMTP-receiver successfully processes the mail data it responds with an OK reply. The dialog is purposely lock-step, one-at-a-time.
The command codes themselves are alphabetic characters terminated by <SP> if parameters follow and <CRLF> otherwise.
Command | Syntax | Error Codes |
---|---|---|
Description | ||
HELLO | HELO domain | S: 250 E: 500, 501, 504, 421 |
Deliver mail to one or more mailboxes. The argument field contains a reverse-path. | ||
MAIL FROM:reverse-path | S: 250 F: 552, 451, 452 E: 500, 501, 421 |
|
Deliver mail to one or more mailboxes. The argument field contains a reverse-path. | ||
RECIPIENT | RCPT TO:forward-path | S: 250, 251 F: 550, 551, 552, 553, 450, 451, 452 E: 500, 501, 503, 421 |
Set a recipient of the mail data; multiple recipients are specified by multiple uses of this command. | ||
DATA | DATA | I: 354 -> data -> -> S: 250 -> F: 552, 554, 451, 452 F: 451, 554 E: 500, 501, 503, 421 |
The lines following the command is mail data from the
sender. The mail data from this command is be appended to the mail data buffer.
The mail data may contain any of the 128 ASCII character codes.
The mail data is terminated by a line containing only a period, that is the character sequence "<CRLF>.<CRLF>". This is the end of mail data indication. |
||
SEND | SEND FROM:reverse-path | S: 250 F: 552, 451, 452 E: 500, 501, 502, 421 |
Deliver mail to one or more terminals. The argument field contains a reverse-path. | ||
SEND OR MAIL | SOML FROM:reverse-path | S: 250 F: 552, 451, 452 E: 500, 501, 502, 421 |
Deliver mail to one or more terminals or mailboxes. The argument field contains a reverse-path. | ||
SEND AND MAIL | SAML FROM:reverse-path | S: 250 F: 552, 451, 452 E: 500, 501, 502, 421 |
Deliver mail to one or more terminals or mailboxes. The argument field contains a reverse-path. | ||
RESET | RSET | S: 250 E: 500, 501, 504, 421 |
Abort the mail transaction. | ||
VERIFY | VRFY string | S: 250, 251 F: 550, 551, 553 E: 500, 501, 502, 504, 421 |
Verify that string identifies a user. If it is a user name, the full name of the user (if known) and the fully specified mailbox are returned. | ||
EXPAND | EXPN string | S: 250 F: 550 E: 500, 501, 502, 504, 421 |
Expand the mailing list. The full name of the users (if known) and the fully specified mailboxes are returned, one to a line, in a multiline reply. | ||
HELP | HELP[ string] | S: 211, 214 E: 500, 501, 502, 504, 421 |
Provide server information. The command may take an argument (e.g., any command name) and return more specific information as a response. . | ||
NOOP | NOOP | S: 250 E: 500, 421 |
The receiver should send an OK reply. | ||
QUIT | QUIT | S: 221 E: 500 |
The receiver sends an OK reply, and then closes the transmission channel. . | ||
TURN | TURN | S: 250 F: 502 E: 500, 503 |
Reverse the roles of the two programs communicating over the transmission channel. |