#pragma once #include #include #include #include "management/settings.hpp" #include "management/mail.hpp" #include "thread_safe_queue.hpp" namespace smtp::message { struct WriteThis { int counter; }; class Sender { public: Sender( manage::Settings const& settings_storage, manage::Mail const& mail_to, ThreadSafeQueue& message_queue ); ~Sender() = default; void Send(); private: bool InitCurl( CURL* curl, WriteThis const& upload_ctx, std::string const& mail_from ); void UpdateMailText( std::string const& mail_from, std::string const& subject, std::string const& textt ) const; void FillRecipients(CURL* curl, curl_slist* recipients ); std::string GetHostPortData() const; static size_t ReadCallBack( void *ptr, size_t size, size_t nmemb, void *userp ); manage::Settings const& mSettingsStorage; manage::Mail const& mMailTo; ThreadSafeQueue& mMessageQueue; }; }