From 31dbe72afb5e04cd86d4f107e7257fb60aaa087b Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 25 Jan 2018 14:43:07 +0100 Subject: Do the logging in the resource code. --- examples/mailtransportresource/mailtransport.cpp | 18 +++++------------- examples/mailtransportresource/mailtransport.h | 7 ++++++- .../mailtransportresource/mailtransportresource.cpp | 8 ++++++-- 3 files changed, 17 insertions(+), 16 deletions(-) (limited to 'examples') diff --git a/examples/mailtransportresource/mailtransport.cpp b/examples/mailtransportresource/mailtransport.cpp index afe0257..65299a2 100644 --- a/examples/mailtransportresource/mailtransport.cpp +++ b/examples/mailtransportresource/mailtransport.cpp @@ -21,7 +21,6 @@ #include #include #include -#include extern "C" { @@ -142,13 +141,14 @@ bool sendMessageCurl(const char *to[], int numTos, const char *cc[], int numCcs, res = curl_easy_perform(curl); if(res != CURLE_OK) { + errorMessage += "Error code: " + QByteArray::number(res) + ", "; errorMessage += curl_easy_strerror(res); errorMessage += "; "; } long http_code = 0; curl_easy_getinfo (curl, CURLINFO_RESPONSE_CODE, &http_code); if (http_code == 200 && res != CURLE_ABORTED_BY_CALLBACK) { - //Succeeded + //Succeeded } else { errorMessage += errorBuffer; } @@ -161,10 +161,8 @@ bool sendMessageCurl(const char *to[], int numTos, const char *cc[], int numCcs, }; -bool MailTransport::sendMessage(const KMime::Message::Ptr &message, const QByteArray &server, const QByteArray &username, const QByteArray &password, const QByteArray &cacert, MailTransport::Options options) +MailTransport::SendResult MailTransport::sendMessage(const KMime::Message::Ptr &message, const QByteArray &server, const QByteArray &username, const QByteArray &password, const QByteArray &cacert, MailTransport::Options options) { - QByteArray msg = message->encodedContent(); - QByteArray from(message->from(true)->mailboxes().isEmpty() ? QByteArray() : message->from(true)->mailboxes().first().address()); QList toList; for (const auto &mb : message->to(true)->mailboxes()) { @@ -177,9 +175,6 @@ bool MailTransport::sendMessage(const KMime::Message::Ptr &message, const QByteA const bool verifyPeer = options.testFlag(VerifyPeers); const bool useTls = options.testFlag(UseTls); - SinkLog() << "Sending message " << server << username << password << "CaCert: " << cacert << "Use tls: " << useTls << " Verify peer: " << verifyPeer; - SinkTrace() << "Sending message " << msg; - const int numTos = toList.size(); const char* to[numTos]; for (int i = 0; i < numTos; i++) { @@ -196,9 +191,6 @@ bool MailTransport::sendMessage(const KMime::Message::Ptr &message, const QByteA serverAddress.replace("smtps://", "smtp://"); QByteArray errorMessage; - auto ret = sendMessageCurl(to, numTos, cc, numCcs, msg, useTls, from.isEmpty() ? nullptr : from, username, password, serverAddress, verifyPeer, cacert, errorMessage); - if (!ret) { - SinkWarning() << "Failed to send message: " << errorMessage; - } - return ret; + auto ret = sendMessageCurl(to, numTos, cc, numCcs, message->encodedContent(), useTls, from.isEmpty() ? nullptr : from, username, password, serverAddress, verifyPeer, cacert, errorMessage); + return {ret, errorMessage}; } diff --git a/examples/mailtransportresource/mailtransport.h b/examples/mailtransportresource/mailtransport.h index 662fdc9..0fa5a66 100644 --- a/examples/mailtransportresource/mailtransport.h +++ b/examples/mailtransportresource/mailtransport.h @@ -31,10 +31,15 @@ namespace MailTransport }; Q_DECLARE_FLAGS(Options, Option); + struct SendResult { + bool error; + QString errorMessage; + }; + /* * For ssl use "smtps://mainserver.example.net * @param cacert: "/path/to/certificate.pem"; */ - bool sendMessage(const KMime::Message::Ptr &message, const QByteArray &server, const QByteArray &username, const QByteArray &password, const QByteArray &cacert, Options flags); + SendResult sendMessage(const KMime::Message::Ptr &message, const QByteArray &server, const QByteArray &username, const QByteArray &password, const QByteArray &cacert, Options flags); }; Q_DECLARE_OPERATORS_FOR_FLAGS(MailTransport::Options) diff --git a/examples/mailtransportresource/mailtransportresource.cpp b/examples/mailtransportresource/mailtransportresource.cpp index 1d90adf..516ff8e 100644 --- a/examples/mailtransportresource/mailtransportresource.cpp +++ b/examples/mailtransportresource/mailtransportresource.cpp @@ -129,8 +129,12 @@ public: if (settings.server.contains("smtps")) { options |= MailTransport::UseTls; } - if (!MailTransport::sendMessage(msg, settings.server.toUtf8(), settings.username.toUtf8(), secret().toUtf8(), settings.cacert.toUtf8(), options)) { - SinkWarning() << "Failed to send message: " << mail; + + SinkLog() << "Sending message " << settings.server << settings.username << "CaCert: " << settings.cacert; + SinkTrace() << "Sending message " << msg; + auto result = MailTransport::sendMessage(msg, settings.server.toUtf8(), settings.username.toUtf8(), secret().toUtf8(), settings.cacert.toUtf8(), options); + if (!result.error) { + SinkWarning() << "Failed to send message: " << mail << "\n" << result.errorMessage; emitNotification(Notification::Warning, ApplicationDomain::SyncError, "Failed to send message.", {}, {mail.identifier()}); emitNotification(Notification::Warning, ApplicationDomain::TransmissionError, "Failed to send message.", {}, {mail.identifier()}); return KAsync::error("Failed to send the message."); -- cgit v1.2.3