summaryrefslogtreecommitdiff
path: root/src/message/queue_sender.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/message/queue_sender.cpp')
-rw-r--r--src/message/queue_sender.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/message/queue_sender.cpp b/src/message/queue_sender.cpp
new file mode 100644
index 0000000..8f0172a
--- /dev/null
+++ b/src/message/queue_sender.cpp
@@ -0,0 +1,39 @@
+#include "queue_sender.hpp"
+#include "sender.hpp"
+
+namespace smtp::message
+{
+ QueueSender::QueueSender( manage::Settings const& settings_storage,
+ manage::Mail& mail_to,
+ thread::Queue& message_queue)
+ : mSettingsStorage( settings_storage )
+ , mMailTo( mail_to )
+ , mMessageQueue( message_queue )
+ {
+
+ }
+
+ void QueueSender::SendMessages()
+ {
+ Sender message_sender;
+ while (1)
+ {
+ auto message = mMessageQueue.WaitAndPop();
+ auto mail_from = GetMailfrom();
+ auto mails_to = mMailTo.GetMailToSend();
+ message_sender.Send( mSettingsStorage, mail_from, mails_to, message->subject, message->text );
+ }
+ }
+
+ std::string QueueSender::GetMailfrom() const
+ {
+ return mSettingsStorage.IsNeedAuth() ? mSettingsStorage.GetUserName() :
+ GetDefaultMailfrom();
+ }
+
+ std::string QueueSender::GetDefaultMailfrom() const
+ {
+ return "cp2-5422";
+ }
+
+}