49 lines
1.1 KiB
C++
49 lines
1.1 KiB
C++
#ifndef __SendMail_h__
|
|
#define __SendMail_h__
|
|
|
|
#include "EPoll.h"
|
|
#include "TCPSession2.h"
|
|
#include "MString.h"
|
|
#include "Timer.h"
|
|
|
|
#define CRLF "\r\n"
|
|
#define CRLF "\r\n"
|
|
#ifndef ___state_defined___
|
|
#define ___state_defined___
|
|
typedef enum {CONNECT, READY, READYX, MAIL, RCPT, DATA, SENT} State;
|
|
#endif
|
|
|
|
namespace mail {
|
|
|
|
class SendMail : public core::TCPSession2, private core::Timer {
|
|
|
|
public:
|
|
SendMail(core::EPoll &ePoll, std::string from, std::string recipient, std::string mailFileName);
|
|
SendMail(const SendMail ©);
|
|
~SendMail();
|
|
coreutils::MString& send();
|
|
|
|
void protocol(coreutils::ZString &data) override;
|
|
|
|
private:
|
|
std::vector<coreutils::MString>& extractRecipientList();
|
|
void onTimeout() override;
|
|
|
|
core::EPoll &ePoll;
|
|
|
|
coreutils::File mailData;
|
|
coreutils::MString from;
|
|
coreutils::MString recipient;
|
|
coreutils::MString mailFileName;
|
|
coreutils::MString buffer;
|
|
std::vector<coreutils::MString> recipientList;
|
|
|
|
State state = CONNECT;
|
|
State stateOnTimeout = CONNECT;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|