#pragma once #include #include #include #include "settings_storage.hpp" namespace smtp { struct WriteThis { int counter; }; class MessageSender { public: MessageSender( SettingsStorage const& settings_storage ); ~MessageSender() = default; bool Send( std::string const& mail_from, std::string const& mail_to, std::list const& cc, std::string const& subject, std::string const& text ); private: std::string GetText( std::string const& mail_from, std::string const& mail_to, std::list const& cc, std::string const& subject, std::string const& textt ) const; void InitSenders( std::string const& mail_from, std::list const& mail_to ); void FillRecipients( CURL* curl, std::string const& mail_to, std::list const& cc, curl_slist* recipients ); std::string GetHostPortData() const; void ProcessSending(const std::string &mail_from, const std::list &mail_to, const std::string &subject, const std::string &text); timeval GetNowTime() const noexcept; bool IsTimeOut( timeval const& start_time ) const noexcept; long GetTimeDiff( timeval const& left, timeval const& right ) const noexcept; timeval GetTimeout() const; int ProcessHandle( timeval& timeout ) const; void ClearPtrs(); static size_t ReadCallBack( void *ptr, size_t size, size_t nmemb, void *userp ); // CURL *curl; // CURLM *mcurl; struct WriteThis pooh; struct curl_slist* recipients = NULL; SettingsStorage const& mSettingsStorage; }; }