com.dumbster.smtp

Class SmtpRequest

public class SmtpRequest extends Object

Contains an SMTP client request. Handles state transitions using the following state transition table.
 -----------+-------------------------------------------------------------------------------------------------
            |                                 State
  Action    +-------------+-----------+-----------+--------------+---------------+---------------+------------
            | CONNECT     | GREET     | MAIL      | RCPT         | DATA_HDR      | DATA_BODY     | QUIT
 -----------+-------------+-----------+-----------+--------------+---------------+---------------+------------
 connect    | 220/GREET   | 503/GREET | 503/MAIL  | 503/RCPT     | 503/DATA_HDR  | 503/DATA_BODY | 503/QUIT
 ehlo       | 503/CONNECT | 250/MAIL  | 503/MAIL  | 503/RCPT     | 503/DATA_HDR  | 503/DATA_BODY | 503/QUIT
 mail       | 503/CONNECT | 503/GREET | 250/RCPT  | 503/RCPT     | 503/DATA_HDR  | 503/DATA_BODY | 250/RCPT
 rcpt       | 503/CONNECT | 503/GREET | 503/MAIL  | 250/RCPT     | 503/DATA_HDR  | 503/DATA_BODY | 503/QUIT
 data       | 503/CONNECT | 503/GREET | 503/MAIL  | 354/DATA_HDR | 503/DATA_HDR  | 503/DATA_BODY | 503/QUIT
 data_end   | 503/CONNECT | 503/GREET | 503/MAIL  | 503/RCPT     | 250/QUIT      | 250/QUIT      | 503/QUIT
 unrecog    | 500/CONNECT | 500/GREET | 500/MAIL  | 500/RCPT     | ---/DATA_HDR  | ---/DATA_BODY | 500/QUIT
 quit       | 503/CONNECT | 503/GREET | 503/MAIL  | 503/RCPT     | 503/DATA_HDR  | 503/DATA_BODY | 250/CONNECT
 blank_line | 503/CONNECT | 503/GREET | 503/MAIL  | 503/RCPT     | ---/DATA_BODY | ---/DATA_BODY | 503/QUIT
 rset       | 250/GREET   | 250/GREET | 250/GREET | 250/GREET    | 250/GREET     | 250/GREET     | 250/GREET
 vrfy       | 252/CONNECT | 252/GREET | 252/MAIL  | 252/RCPT     | 252/DATA_HDR  | 252/DATA_BODY | 252/QUIT
 expn       | 252/CONNECT | 252/GREET | 252/MAIL  | 252/RCPT     | 252/DATA_HDR  | 252/DATA_BODY | 252/QUIT
 help       | 211/CONNECT | 211/GREET | 211/MAIL  | 211/RCPT     | 211/DATA_HDR  | 211/DATA_BODY | 211/QUIT
 noop       | 250/CONNECT | 250/GREET | 250/MAIL  | 250/RCPT     | 250|DATA_HDR  | 250/DATA_BODY | 250/QUIT
 
Constructor Summary
SmtpRequest(SmtpActionType actionType, String params, SmtpState state)
Create a new SMTP client request.
Method Summary
static SmtpRequestcreateRequest(String s, SmtpState state)
Create an SMTP request object given a line of the input stream from the client and the current internal state.
SmtpResponseexecute()
Execute the SMTP request returning a response.
StringgetParams()
Get the parameters of this request (remainder of command line once the command is removed.

Constructor Detail

SmtpRequest

public SmtpRequest(SmtpActionType actionType, String params, SmtpState state)
Create a new SMTP client request.

Parameters: actionType type of action/command params remainder of command line once command is removed state current SMTP server state

Method Detail

createRequest

public static SmtpRequest createRequest(String s, SmtpState state)
Create an SMTP request object given a line of the input stream from the client and the current internal state.

Parameters: s line of input state current state

Returns: a populated SmtpRequest object

execute

public SmtpResponse execute()
Execute the SMTP request returning a response. This method models the state transition table for the SMTP server.

Returns: reponse to the request

getParams

public String getParams()
Get the parameters of this request (remainder of command line once the command is removed.

Returns: parameters