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