From e5dfbf1d8121a5b50ffd13b8c2f8d8ad7e3cf270 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 1 Jul 2016 09:56:27 +0200 Subject: Removed mailtransport that lives in Sink now. --- framework/domain/CMakeLists.txt | 7 +- framework/domain/actions/mailactions.cpp | 29 ------ framework/domain/mailtransport.cpp | 160 ------------------------------- framework/domain/mailtransport.h | 28 ------ 4 files changed, 1 insertion(+), 223 deletions(-) delete mode 100644 framework/domain/actions/mailactions.cpp delete mode 100644 framework/domain/mailtransport.cpp delete mode 100644 framework/domain/mailtransport.h (limited to 'framework') diff --git a/framework/domain/CMakeLists.txt b/framework/domain/CMakeLists.txt index 8b58296d..114b054d 100644 --- a/framework/domain/CMakeLists.txt +++ b/framework/domain/CMakeLists.txt @@ -3,13 +3,11 @@ set(mailplugin_SRCS maillistmodel.cpp folderlistmodel.cpp actions/sinkactions.cpp - actions/mailactions.cpp objecttreesource.cpp stringhtmlwriter.cpp csshelper.cpp composercontroller.cpp messageparser.cpp - mailtransport.cpp mailtemplates.cpp retriever.cpp accountfactory.cpp @@ -19,15 +17,12 @@ set(mailplugin_SRCS ) add_definitions(-DMAIL_DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data") -find_package(CURL 7.20.0 REQUIRED) find_package(KF5 REQUIRED COMPONENTS Package) -include_directories(${CURL_INCLUDE_DIRS}) - add_library(mailplugin SHARED ${mailplugin_SRCS}) qt5_use_modules(mailplugin Core Quick Qml WebKitWidgets) -target_link_libraries(mailplugin actionplugin settingsplugin sink KF5::MimeTreeParser KF5::Codecs KF5::Package KF5::Async KF5::IconThemes ${CURL_LIBRARIES}) +target_link_libraries(mailplugin actionplugin settingsplugin sink KF5::MimeTreeParser KF5::Codecs KF5::Package KF5::Async KF5::IconThemes) add_subdirectory(actions/tests) diff --git a/framework/domain/actions/mailactions.cpp b/framework/domain/actions/mailactions.cpp deleted file mode 100644 index fde98c85..00000000 --- a/framework/domain/actions/mailactions.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - Copyright (c) 2016 Christian Mollekopf - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ -#include -#include - -#include "../mailtransport.h" -#include -#include -#include -#include - -using namespace Kube; - diff --git a/framework/domain/mailtransport.cpp b/framework/domain/mailtransport.cpp deleted file mode 100644 index 49d858e1..00000000 --- a/framework/domain/mailtransport.cpp +++ /dev/null @@ -1,160 +0,0 @@ -/* - Copyright (c) 2016 Christian Mollekopf - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ -#include "mailtransport.h" - -#include -#include -#include - -extern "C" { - -#include -#include -#include - -struct upload_status { - int offset; - const char *data; -}; - -static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp) -{ - struct upload_status *upload_ctx = (struct upload_status *)userp; - const char *data; - - if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) { - return 0; - } - - data = &upload_ctx->data[upload_ctx->offset]; - if(data) { - size_t len = strlen(data); - if (len > size * nmemb) { - len = size * nmemb; - } - fprintf(stderr, "read n bytes: %d\n",len); - memcpy(ptr, data, len); - upload_ctx->offset += len; - return len; - } - - return 0; -} - - -void sendMessageCurl(const char *to[], int numTos, const char *cc[], int numCcs, const char *msg, bool useTls, const char* from, const char *username, const char *password, const char *server, bool verifyPeer) -{ - //For ssl use "smtps://mainserver.example.net - const char* cacert = 0; // = "/path/to/certificate.pem"; - - CURL *curl; - CURLcode res = CURLE_OK; - struct curl_slist *recipients = NULL; - struct upload_status upload_ctx; - - upload_ctx.offset = 0; - upload_ctx.data = msg; - - curl = curl_easy_init(); - if(curl) { - curl_easy_setopt(curl, CURLOPT_USERNAME, username); - curl_easy_setopt(curl, CURLOPT_PASSWORD, password); - - curl_easy_setopt(curl, CURLOPT_URL, server); - - if (useTls) { - curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_TRY); - } - - if (!verifyPeer) { - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); - } - if (cacert) { - curl_easy_setopt(curl, CURLOPT_CAINFO, cacert); - } - - if (from) { - curl_easy_setopt(curl, CURLOPT_MAIL_FROM, from); - } - - for (int i = 0; i < numTos; i++) { - recipients = curl_slist_append(recipients, to[i]); - } - for (int i = 0; i < numCcs; i++) { - recipients = curl_slist_append(recipients, cc[i]); - } - curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients); - - /* We're using a callback function to specify the payload (the headers and - * body of the message). You could just use the CURLOPT_READDATA option to - * specify a FILE pointer to read from. */ - curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source); - curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx); - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); - - /* Since the traffic will be encrypted, it is very useful to turn on debug - * information within libcurl to see what is happening during the transfer. - */ - curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); - - res = curl_easy_perform(curl); - if(res != CURLE_OK) { - fprintf(stderr, "curl_easy_perform() failed: %s\n", - curl_easy_strerror(res)); - } - curl_slist_free_all(recipients); - curl_easy_cleanup(curl); - } -} - -}; - -void MailTransport::sendMessage(const KMime::Message::Ptr &message, const QByteArray &server, const QByteArray &username, const QByteArray &password, const QByteArray &cacert) -{ - QByteArray msg = message->encodedContent(); - qWarning() << "Sending message " << msg; - - QByteArray from(message->from(true)->mailboxes().isEmpty() ? QByteArray() : message->from(true)->mailboxes().first().address()); - QList toList; - for (const auto &mb : message->to(true)->mailboxes()) { - toList << mb.address(); - } - QList ccList; - for (const auto &mb : message->cc(true)->mailboxes()) { - ccList << mb.address(); - } - bool useTls = true; - bool verifyPeer = false; - - const int numTos = toList.size(); - const char* to[numTos]; - for (int i = 0; i < numTos; i++) { - to[i] = toList.at(i); - } - - const int numCcs = ccList.size(); - const char* cc[numCcs]; - for (int i = 0; i < numCcs; i++) { - cc[i] = ccList.at(i); - } - - sendMessageCurl(to, numTos, cc, numCcs, msg, useTls, from.isEmpty() ? nullptr : from, username, password, server, verifyPeer); - qWarning() << "Message sent"; -} diff --git a/framework/domain/mailtransport.h b/framework/domain/mailtransport.h deleted file mode 100644 index 2eb30a03..00000000 --- a/framework/domain/mailtransport.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - Copyright (c) 2016 Christian Mollekopf - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ - -#pragma once - -#include -#include - -namespace MailTransport -{ - void sendMessage(const KMime::Message::Ptr &message, const QByteArray &server, const QByteArray &username, const QByteArray &password, const QByteArray &cacert); -}; -- cgit v1.2.3