From f1821355a7c034b201e454e2bfd7da5ac6b64579 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 17 Jan 2017 20:22:02 +0100 Subject: Also try to send the mail on changereplay. --- .../mailtransportresource.cpp | 62 +++++++++++----------- 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'examples') diff --git a/examples/mailtransportresource/mailtransportresource.cpp b/examples/mailtransportresource/mailtransportresource.cpp index 4dc9567..0118140 100644 --- a/examples/mailtransportresource/mailtransportresource.cpp +++ b/examples/mailtransportresource/mailtransportresource.cpp @@ -55,38 +55,37 @@ public: KAsync::Job send(const ApplicationDomain::Mail &mail, const MailtransportResource::Settings &settings) { - if (!syncStore().readValue(mail.identifier()).isEmpty()) { - SinkLog() << "Mail is already sent: " << mail.identifier(); - return KAsync::null(); - } - const auto data = mail.getMimeMessage(); - auto msg = KMime::Message::Ptr::create(); - msg->setHead(KMime::CRLFtoLF(data)); - msg->parse(); - if (settings.testMode) { - SinkLog() << "I would totally send that mail, but I'm in test mode." << mail.identifier(); - auto path = resourceStorageLocation(mResourceInstanceIdentifier) + "/test/"; - SinkTrace() << path; - QDir dir; - dir.mkpath(path); - QFile f(path+ mail.identifier()); - f.open(QIODevice::ReadWrite); - f.write("foo"); - f.close(); - } else { - MailTransport::Options options; - if (settings.server.contains("smtps")) { - options &= MailTransport::UseTls; + return KAsync::start([=] { + if (!syncStore().readValue(mail.identifier()).isEmpty()) { + SinkLog() << "Mail is already sent: " << mail.identifier(); + return KAsync::null(); } - if (MailTransport::sendMessage(msg, settings.server.toUtf8(), settings.username.toUtf8(), settings.password.toUtf8(), settings.cacert.toUtf8(), options)) { - SinkLog() << "Sent message successfully"; + const auto data = mail.getMimeMessage(); + auto msg = KMime::Message::Ptr::create(); + msg->setHead(KMime::CRLFtoLF(data)); + msg->parse(); + if (settings.testMode) { + SinkLog() << "I would totally send that mail, but I'm in test mode." << mail.identifier(); + auto path = resourceStorageLocation(mResourceInstanceIdentifier) + "/test/"; + SinkTrace() << path; + QDir dir; + dir.mkpath(path); + QFile f(path+ mail.identifier()); + f.open(QIODevice::ReadWrite); + f.write("foo"); + f.close(); } else { - SinkLog() << "Failed to send message"; - return KAsync::error(1, "Failed to send the message."); + MailTransport::Options options; + if (settings.server.contains("smtps")) { + options &= MailTransport::UseTls; + } + if (!MailTransport::sendMessage(msg, settings.server.toUtf8(), settings.username.toUtf8(), settings.password.toUtf8(), settings.cacert.toUtf8(), options)) { + SinkWarning() << "Failed to send message: " << mail; + return KAsync::error("Failed to send the message."); + } } - } - syncStore().writeValue(mail.identifier(), "sent"); - return KAsync::start([=] { + syncStore().writeValue(mail.identifier(), "sent"); + SinkLog() << "Sent mail, and triggering move to sent mail folder: " << mail.identifier(); auto modifiedMail = ApplicationDomain::Mail(mResourceInstanceIdentifier, mail.identifier(), mail.revision(), QSharedPointer::create()); modifiedMail.setSent(true); @@ -128,14 +127,15 @@ public: bool canReplay(const QByteArray &type, const QByteArray &key, const QByteArray &value) Q_DECL_OVERRIDE { - return false; + return true; } KAsync::Job replay(const ApplicationDomain::Mail &mail, Sink::Operation operation, const QByteArray &oldRemoteId, const QList &changedProperties) Q_DECL_OVERRIDE { if (operation == Sink::Operation_Creation) { SinkTrace() << "Dispatching message."; - // return send(mail, mSettings); + return send(mail, mSettings) + .then(KAsync::value(QByteArray{})); } else if (operation == Sink::Operation_Removal) { syncStore().removeValue(mail.identifier(), ""); } else if (operation == Sink::Operation_Modification) { -- cgit v1.2.3