From 24eec910e0098151f5c36f88c4337b4ebbca2c0b Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 24 Feb 2016 13:18:57 +0100 Subject: Send mail from the composer --- docs/requirements.md | 12 ++++++++++++ framework/CMakeLists.txt | 1 + framework/actions/action.cpp | 8 ++++++++ framework/actions/action.h | 1 + framework/mail/CMakeLists.txt | 2 +- framework/mail/composer.cpp | 26 +++++++++++++++++++++++++- 6 files changed, 48 insertions(+), 2 deletions(-) diff --git a/docs/requirements.md b/docs/requirements.md index 22de0cb5..a70965a7 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -57,6 +57,18 @@ Currently available dependencies: * GCC 4.6.3 / MSVC 2013 * Qt 5.2 +* kf5-kpackage +** Used as installation format for all qml parts. Intended to serve as abstraction layer to allow replacing certain modules on differnet platforms/formfactors. +* kf5-kcodecs +** dependency of kmime, email address handling (KEmailAddress) +* kf5-kmime +** Parsing and assembling of mails +* libcurl 7.20 +** mailtransport +* libkleo +** crypto-stack, currently only gpg +* libotp +** parsing and html rendering of emails # Codebase diff --git a/framework/CMakeLists.txt b/framework/CMakeLists.txt index ff5fb746..d8d45af9 100644 --- a/framework/CMakeLists.txt +++ b/framework/CMakeLists.txt @@ -22,6 +22,7 @@ find_package(Sink CONFIG REQUIRED) find_package(KF5Async CONFIG REQUIRED) find_package(KF5Libkleo CONFIG REQUIRED) find_package(KF5IconThemes CONFIG REQUIRED) +find_package(KF5Codecs CONFIG REQUIRED) set(CMAKE_AUTOMOC ON) add_definitions("-Wall -std=c++0x -g") diff --git a/framework/actions/action.cpp b/framework/actions/action.cpp index 1f94ae81..905f6f57 100644 --- a/framework/actions/action.cpp +++ b/framework/actions/action.cpp @@ -35,6 +35,14 @@ Action::Action(QObject *parent) { } +Action::Action(const QByteArray &actionId, Context &context, QObject *parent) + : QObject(parent), + mContext(&context), + mActionId(actionId) +{ + +} + void Action::setContext(Context *context) { //Get notified when any property changes diff --git a/framework/actions/action.h b/framework/actions/action.h index 067c3c37..b820955e 100644 --- a/framework/actions/action.h +++ b/framework/actions/action.h @@ -33,6 +33,7 @@ class Action : public QObject public: Action(QObject *parent = 0); + Action(const QByteArray &actionId, Context &context, QObject *parent = 0); void setContext(Context *); Context *context() const; diff --git a/framework/mail/CMakeLists.txt b/framework/mail/CMakeLists.txt index 94d15f4c..7215427b 100644 --- a/framework/mail/CMakeLists.txt +++ b/framework/mail/CMakeLists.txt @@ -24,7 +24,7 @@ add_library(mailplugin SHARED ${mailplugin_SRCS}) qt5_use_modules(mailplugin Core Quick Qml) -target_link_libraries(mailplugin actionplugin sink KF5::Otp ${CURL_LIBRARIES}) +target_link_libraries(mailplugin actionplugin sink KF5::Otp KF5::Codecs ${CURL_LIBRARIES}) install(TARGETS mailplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/kube/mail) install(FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/kube/mail) diff --git a/framework/mail/composer.cpp b/framework/mail/composer.cpp index 6f603979..1ec56347 100644 --- a/framework/mail/composer.cpp +++ b/framework/mail/composer.cpp @@ -19,6 +19,12 @@ #include "composer.h" +#include +#include +#include +#include +#include +#include Composer::Composer(QObject *parent) : QObject(parent) { @@ -110,7 +116,25 @@ void Composer::setFromIndex(int fromIndex) void Composer::send() { - //TODO + auto mail = KMime::Message::Ptr::create(); + for (const auto &to : KEmailAddress::splitAddressList(m_to)) { + QByteArray displayName; + QByteArray addrSpec; + QByteArray comment; + KEmailAddress::splitAddress(to.toUtf8(), displayName, addrSpec, comment); + mail->to(true)->addAddress(addrSpec, displayName); + } + mail->subject(true)->fromUnicodeString(m_subject, "utf-8"); + mail->setBody(m_body.toUtf8()); + mail->assemble(); + Kube::Context context; + context.setProperty("message", QVariant::fromValue(mail)); + //TODO get from somewhere + context.setProperty("username", QVariant::fromValue(QByteArray("test@test.com"))); + context.setProperty("password", QVariant::fromValue(QByteArray("pass"))); + context.setProperty("server", QVariant::fromValue(QByteArray("smtp://smtp.gmail.com:587"))); + + Kube::Action("org.kde.kube.actions.sendmail", context).execute(); clear(); } -- cgit v1.2.3