From a2894c03a83d3d9a00d44c752aa94fc12c96d858 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 12 Oct 2017 17:30:38 +0200 Subject: Load html messages as html --- components/kube/contents/ui/ComposerView.qml | 1 + framework/src/domain/composercontroller.cpp | 5 ++++- framework/src/domain/mime/mailtemplates.cpp | 13 +++++++++++++ framework/src/domain/mime/mailtemplates.h | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/components/kube/contents/ui/ComposerView.qml b/components/kube/contents/ui/ComposerView.qml index 95f267b2..9456e786 100644 --- a/components/kube/contents/ui/ComposerView.qml +++ b/components/kube/contents/ui/ComposerView.qml @@ -283,6 +283,7 @@ Kube.View { text: checked ? qsTr("plain") : qsTr("html") focusPolicy: Qt.TabFocus focus: false + checked: composerController.htmlBody } Row { diff --git a/framework/src/domain/composercontroller.cpp b/framework/src/domain/composercontroller.cpp index abb4fdf4..258c25d5 100644 --- a/framework/src/domain/composercontroller.cpp +++ b/framework/src/domain/composercontroller.cpp @@ -346,7 +346,10 @@ void ComposerController::setMessage(const KMime::Message::Ptr &msg) mBccModel->setStringList(getStringListFromAddresses(msg->bcc(true)->mailboxes())); setSubject(msg->subject(true)->asUnicodeString()); - setBody(MailTemplates::plaintextContent(msg)); + bool isHtml = false; + const auto body = MailTemplates::body(msg, isHtml); + setHtmlBody(isHtml); + setBody(body); //TODO use ObjecTreeParser to get encrypted attachments as well foreach (const auto &att, msg->attachments()) { diff --git a/framework/src/domain/mime/mailtemplates.cpp b/framework/src/domain/mime/mailtemplates.cpp index e8d80d40..bbe079d8 100644 --- a/framework/src/domain/mime/mailtemplates.cpp +++ b/framework/src/domain/mime/mailtemplates.cpp @@ -887,6 +887,19 @@ QString MailTemplates::plaintextContent(const KMime::Message::Ptr &msg) return plain; } +QString MailTemplates::body(const KMime::Message::Ptr &msg, bool &isHtml) +{ + MimeTreeParser::ObjectTreeParser otp; + otp.parseObjectTree(msg.data()); + const auto html = otp.htmlContent(); + if (html.isEmpty()) { + isHtml = false; + return otp.plainTextContent(); + } + isHtml = true; + return html; +} + static KMime::Content *createAttachmentPart(const QByteArray &content, const QString &filename, bool isInline, const QByteArray &mimeType, const QString &name) { diff --git a/framework/src/domain/mime/mailtemplates.h b/framework/src/domain/mime/mailtemplates.h index d28b100e..51db2ba0 100644 --- a/framework/src/domain/mime/mailtemplates.h +++ b/framework/src/domain/mime/mailtemplates.h @@ -36,5 +36,6 @@ namespace MailTemplates { void reply(const KMime::Message::Ptr &origMsg, const std::function &callback, const KMime::Types::AddrSpecList &me = {}); QString plaintextContent(const KMime::Message::Ptr &origMsg); + QString body(const KMime::Message::Ptr &msg, bool &isHtml); KMime::Message::Ptr createMessage(KMime::Message::Ptr existingMessage, const QStringList &to, const QStringList &cc, const QStringList &bcc, const KMime::Types::Mailbox &from, const QString &subject, const QString &body, bool htmlBody, const QList &attachments, const std::vector &signingKeys = {}); }; -- cgit v1.2.3