35 #include <boost/asio.hpp> 36 #include <boost/bind.hpp> 37 #include <boost/lexical_cast.hpp> 38 #include <boost/archive/iterators/base64_from_binary.hpp> 39 #include <boost/archive/iterators/transform_width.hpp> 40 #include <boost/archive/iterators/ostream_iterator.hpp> 50 using boost::asio::ip::tcp;
52 typedef base64_from_binary<transform_width<const char *,6,8> >
base64_text;
61 mServer(pServer),mPort(pPort),mUserName(pUser),mPassword(pPassword),mSocket(mIOService),mResolver(mIOService)
63 tcp::resolver::query qry(mServer,boost::lexical_cast<std::string>( mPort ));
65 boost::asio::placeholders::iterator));
81 size_t sz=pData.size();
85 void handleResolve(
const boost::system::error_code& err,tcp::resolver::iterator endpoint_iterator)
89 tcp::endpoint endpoint=*endpoint_iterator;
90 mSocket.async_connect(endpoint,
96 mErrorMsg= err.message();
101 std::ostream req_strm(&mRequest);
102 req_strm << pData <<
"\r\n";
103 boost::asio::write(mSocket,mRequest);
109 boost::asio::read_until(mSocket,
response,
"\r\n");
110 std::istream response_stream(&
response);
111 response_stream >> pData;
113 void handleConnect(
const boost::system::error_code& err,tcp::resolver::iterator endpoint_iterator)
119 std::ostream req_strm(&mRequest);
120 writeLine(
"EHLO "+mServer);
122 writeLine(
"AUTH LOGIN");
124 writeLine(encodeBase64(mUserName));
126 writeLine(encodeBase64(mPassword));
128 writeLine(
"MAIL FROM:<"+mFrom+
">");
129 writeLine(
"RCPT TO:<"+mTo+
">");
131 writeLine(
"SUBJECT:"+mSubject);
132 writeLine(
"From:"+mFrom);
133 writeLine(
"To:"+mTo);
135 writeLine( mMessage );
136 writeLine(
"\r\n.\r\n");
138 if(read_buff ==
"250")
145 mErrorMsg= err.message();
156 boost::asio::io_service mIOService;
157 tcp::resolver mResolver;
159 boost::asio::streambuf mRequest;
160 boost::asio::streambuf mResponse;
173 return mailc.
Send(from_email,maillist,subject,body);
base64_from_binary< transform_width< const char *, 6, 8 > > base64_text
epee::misc_utils::struct_init< response_t > response
smtp_client(std::string pServer, unsigned int pPort, std::string pUser, std::string pPassword)
std::unique_ptr< void, close > socket
Unique ZMQ socket handle, calls zmq_close on destruction.
void copy(key &AA, const key &A)
bool Send(std::string pFrom, std::string pTo, std::string pSubject, std::string pMessage)
boost::endian::big_uint16_t port
bool send_mail(const std::string &server, int port, const std::string &login, const std::string &pass, const std::string &from_email, const std::string &maillist, const std::string &subject, const std::string &body)
#define STD_TRY_CATCH(where_, ret_val)
error
Tracks LMDB error codes.