SMTP code 354 is returned after the client issues the DATA command, signaling that the server is ready to receive the message body — headers and content. The client should now send the full message (including headers like From, To, Subject, Date, and the body) and terminate the message by sending a line containing only a single period (CRLF.CRLF). Until the server receives this termination sequence, it treats all input as part of the message body. After the terminating dot, the server will respond with 250 if the message is accepted or a 5xx error if it is rejected.
The server has validated the MAIL FROM and at least one RCPT TO, and is now ready to accept the message content. This is the expected response after a successful envelope setup. The client should begin transmitting the message headers and body.
In ESMTP pipelining, the client may send MAIL FROM, RCPT TO, and DATA in a batch. The 354 response appears in the batch of responses, indicating the DATA command was accepted and the server is buffering the incoming message.
After receiving 354, send your message headers and body, then terminate with a line containing only a period. If you forget the terminating dot, the server will wait indefinitely for more input.
# After 354, type your message then end with: .
SMTP requires CRLF (\r\n) line endings, not just LF (\n). Some programming libraries default to LF-only, which can cause the termination dot to go unrecognized, leaving the server waiting for more data.
If the server advertised a SIZE extension in its EHLO response, ensure your message does not exceed that limit. Oversized messages may be silently truncated or rejected after the DATA phase.
While 354 itself does not validate headers, the subsequent processing after the terminating dot may reject messages missing required headers like From, To, or Date. Include all standard headers in your message.
The SMTP command was successfully processed. Used for EHLO responses, MAIL FROM, RCPT TO, and DATA completion.
The server does not have enough storage to process the command. The sender should retry later when space may be available.
The message was rejected because it exceeds the recipient's storage limit or the server's message size limit.