File indexing completed on 2024-06-23 05:18:37
0001 /* 0002 * This file is part of KMail. 0003 * SPDX-FileCopyrightText: 2009 Constantin Berzan <exit3219@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 #pragma once 0008 0009 #include "messagecomposer_export.h" 0010 #include "messagesender.h" 0011 0012 #include <QObject> 0013 0014 #include <KMime/KMimeMessage> 0015 0016 class KJob; 0017 0018 namespace MessageComposer 0019 { 0020 class AkonadiSenderPrivate; 0021 /** 0022 * @brief The AkonadiSender class 0023 */ 0024 class MESSAGECOMPOSER_EXPORT AkonadiSender : public QObject, public MessageSender 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 explicit AkonadiSender(QObject *parent = nullptr); 0030 ~AkonadiSender() override; 0031 0032 protected: 0033 /** 0034 Send given message. The message is either queued or sent 0035 immediately. The default behaviour, as selected with 0036 setSendImmediate(), can be overwritten with the parameter 0037 sendNow (by specifying true or false). 0038 The sender takes ownership of the given message on success, 0039 so DO NOT DELETE OR MODIFY the message further. 0040 Returns true on success. 0041 0042 TODO cberzan: update docu... 0043 */ 0044 [[nodiscard]] bool doSend(const KMime::Message::Ptr &msg, short sendNow) override; 0045 0046 /** 0047 Send queued messages, using the specified transport or the 0048 default, if none is given. 0049 */ 0050 [[nodiscard]] bool doSendQueued(int transportId = -1) override; 0051 0052 private: 0053 /** 0054 Queue or send immediately one message using MailTransport::MessageQueueJob. 0055 */ 0056 MESSAGECOMPOSER_NO_EXPORT void sendOrQueueMessage(const KMime::Message::Ptr &msg, 0057 MessageComposer::MessageSender::SendMethod method = MessageComposer::MessageSender::SendDefault); 0058 0059 MESSAGECOMPOSER_NO_EXPORT void queueJobResult(KJob *job); 0060 std::unique_ptr<AkonadiSenderPrivate> const d; 0061 }; 0062 }