package org.mailster.smtp.core.commands.impl;
import java.io.IOException;
import org.apache.mina.core.session.IoSession;
import org.mailster.smtp.core.SMTPContext;
import org.mailster.smtp.core.SMTPState;
import org.mailster.smtp.core.commands.AbstractCommand;
/**
* The DATA command implementation.
*
* @author De Oliveira Edouard <doe_wanted@yahoo.fr>
* @author Ian McFarland <ian@neo.com>
* @author Jon Stevens
* @author Jeff Schnitzer
*/
public class DataCommand extends AbstractCommand
{
public DataCommand()
{
super("DATA", "The DATA command initiates the message transmission.\n" +
"Message ends with <CR><LF>.<CR><LF>");
}
public void execute(String commandString, IoSession ioSession, SMTPContext ctx)
throws IOException
{
SMTPState smtpState = ctx.getSMTPState();
if (!smtpState.getHasSender())
{
sendResponse(ioSession, "503 Error: need MAIL command");
return;
}
else if (smtpState.getRecipientCount() == 0)
{
sendResponse(ioSession, "503 Error: need RCPT command");
return;
}
smtpState.setDataMode(true);
sendResponse(ioSession, "354 End data with <CR><LF>.<CR><LF>");
}
}