summaryrefslogtreecommitdiffstats
path: root/framework/src
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-07-11 16:01:27 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-07-11 16:01:27 +0200
commit37f18e26ca729fac64fd29164b09f3d3f1143520 (patch)
treecf9c45d43069cbc9bf38e825ad34e0817cd3835b /framework/src
parent8994cab9db689e13dae7445b1946920dca4c6be7 (diff)
downloadkube-37f18e26ca729fac64fd29164b09f3d3f1143520.tar.gz
kube-37f18e26ca729fac64fd29164b09f3d3f1143520.zip
Fixed multipart/alternative replies
Diffstat (limited to 'framework/src')
-rw-r--r--framework/src/CMakeLists.txt2
-rw-r--r--framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp13
-rw-r--r--framework/src/domain/mime/tests/mailtemplatetest.cpp13
3 files changed, 27 insertions, 1 deletions
diff --git a/framework/src/CMakeLists.txt b/framework/src/CMakeLists.txt
index b935fbed..75357b68 100644
--- a/framework/src/CMakeLists.txt
+++ b/framework/src/CMakeLists.txt
@@ -47,6 +47,8 @@ qt5_use_modules(frameworkplugin Core Quick Qml WebEngineWidgets Test)
47target_link_libraries(frameworkplugin sink kube_otp KF5::Codecs KF5::Package KF5::Contacts KAsync) 47target_link_libraries(frameworkplugin sink kube_otp KF5::Codecs KF5::Package KF5::Contacts KAsync)
48install(TARGETS frameworkplugin DESTINATION ${FRAMEWORK_INSTALL_DIR}) 48install(TARGETS frameworkplugin DESTINATION ${FRAMEWORK_INSTALL_DIR})
49 49
50set(BUILD_TESTING ON)
51
50add_subdirectory(domain/mime/tests) 52add_subdirectory(domain/mime/tests)
51add_subdirectory(domain/mime/mimetreeparser) 53add_subdirectory(domain/mime/mimetreeparser)
52 54
diff --git a/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp b/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp
index 7e2be0e4..fc1b9793 100644
--- a/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp
+++ b/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp
@@ -6,6 +6,7 @@
6 Copyright (C) 2002-2004 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net 6 Copyright (C) 2002-2004 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net
7 Copyright (c) 2009 Andras Mantia <andras@kdab.net> 7 Copyright (c) 2009 Andras Mantia <andras@kdab.net>
8 Copyright (c) 2015 Sandro Knauß <sknauss@kde.org> 8 Copyright (c) 2015 Sandro Knauß <sknauss@kde.org>
9 Copyright (c) 2017 Christian Mollekopf <mollekopf@kolabsystems.com>
9 10
10 KMail is free software; you can redistribute it and/or modify it 11 KMail is free software; you can redistribute it and/or modify it
11 under the terms of the GNU General Public License, version 2, as 12 under the terms of the GNU General Public License, version 2, as
@@ -134,6 +135,9 @@ QString ObjectTreeParser::plainTextContent()
134 if (dynamic_cast<MimeTreeParser::TextMessagePart*>(part.data())) { 135 if (dynamic_cast<MimeTreeParser::TextMessagePart*>(part.data())) {
135 return true; 136 return true;
136 } 137 }
138 if (dynamic_cast<MimeTreeParser::AlternativeMessagePart*>(part.data())) {
139 return true;
140 }
137 return false; 141 return false;
138 }); 142 });
139 for (const auto &part : plainParts) { 143 for (const auto &part : plainParts) {
@@ -155,10 +159,17 @@ QString ObjectTreeParser::htmlContent()
155 if (dynamic_cast<MimeTreeParser::HtmlMessagePart*>(part.data())) { 159 if (dynamic_cast<MimeTreeParser::HtmlMessagePart*>(part.data())) {
156 return true; 160 return true;
157 } 161 }
162 if (dynamic_cast<MimeTreeParser::AlternativeMessagePart*>(part.data())) {
163 return true;
164 }
158 return false; 165 return false;
159 }); 166 });
160 for (const auto &part : contentParts) { 167 for (const auto &part : contentParts) {
161 content += part->text(); 168 if (auto p = dynamic_cast<MimeTreeParser::AlternativeMessagePart*>(part.data())) {
169 content += p->htmlContent();
170 } else {
171 content += part->text();
172 }
162 } 173 }
163 } 174 }
164 return content; 175 return content;
diff --git a/framework/src/domain/mime/tests/mailtemplatetest.cpp b/framework/src/domain/mime/tests/mailtemplatetest.cpp
index 4dc8e2bd..e9752c9e 100644
--- a/framework/src/domain/mime/tests/mailtemplatetest.cpp
+++ b/framework/src/domain/mime/tests/mailtemplatetest.cpp
@@ -93,6 +93,19 @@ private slots:
93 QVERIFY(content.contains("i noticed a new branch")); 93 QVERIFY(content.contains("i noticed a new branch"));
94 } 94 }
95 95
96 void testMultipartAlternative()
97 {
98 auto msg = readMail("alternative.mbox");
99 KMime::Message::Ptr result;
100 MailTemplates::reply(msg, [&] (const KMime::Message::Ptr &r) {
101 result = r;
102 });
103 QTRY_VERIFY(result);
104 auto content = removeFirstLine(result->body());
105 QVERIFY(!content.isEmpty());
106 QCOMPARE(unquote(content), QLatin1String("If you can see this text it means that your email client couldn't display our newsletter properly.\nPlease visit this link to view the newsletter on our website: http://www.gog.com/newsletter/\n"));
107 }
108
96}; 109};
97 110
98QTEST_MAIN(MailTemplateTest) 111QTEST_MAIN(MailTemplateTest)