1 #ifndef ____SMTP_DATA_h__ 2 # define ____SMTP_DATA_h__ 10 int processCommand(coreutils::PString request,
SMTPSession &session, std::stringstream &data) {
12 switch(session.
mode) {
16 switch(session.
state) {
19 data <<
"354 Enter the mail message terminated by <CRLF>.<CRLF>" <<
CRLF;
22 session.server.commands.grabInput(*
this);
27 data <<
"503 Please use RCPT first" <<
CRLF;
31 data <<
"503 Please use MAIL first" <<
CRLF;
39 if(request.str().rfind(
"\r\n.\r\n") != std::string::npos) {
42 session.server.commands.clearGrab();
45 if(session.
mailData.str().size() > 0) {
48 data <<
"250 OK Queued message " << ID <<
CRLF;
50 data <<
"550 Mail message too big" <<
CRLF;
52 data <<
"550 Mail message was empty" <<
CRLF;
54 data <<
"250 OK Queued message " <<
CRLF;
62 std::string generateMailFileName() {
64 strftime(name, 256,
"%Y%M%D%H%M%S", gmtime(time()));
65 return std::string(name);
68 std::string queueMail(std::string sender, std::vector<std::string> recipientList, std::stringstream &mailData) {
69 std::string fileName = generateMailFileName();
70 coreutils::File mailFile(fileName, O_CREAT | O_WRONLY, 0660);
71 mailFile.write(mailData.str());
73 for(std::string recipient: recipientList) {
74 std::string newName = fileName + recipient;
75 link(fileName, newName);
Definition: SMTPSession.h:13
State state
Definition: SMTPSession.h:25
Definition: SMTPSession.h:11
Definition: SMTPSession.h:13
Definition: SMTPSession.h:11
std::vector< std::string > recipientList
Definition: SMTPSession.h:30
Mode mode
Definition: SMTPSession.h:27
Definition: __IMAP_APPEND.h:7
std::string sender
Definition: SMTPSession.h:29
Definition: SMTPCommand.h:9
#define CRLF
Definition: SMTPSession.h:7
Definition: SMTPSession.h:15
std::stringstream mailData
Definition: SMTPSession.h:24
Definition: __SMTP_DATA.h:8
Definition: SMTPSession.h:11