From 555183b91fb00ea2a31b0fee35b9ccd1e116a69a Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 3 Aug 2017 10:10:52 -0600 Subject: Signed attachments --- framework/src/domain/mime/mailtemplates.cpp | 15 +++++++++------ framework/src/domain/mime/tests/mailtemplatetest.cpp | 16 ++++++++++++++++ 2 files changed, 25 insertions(+), 6 deletions(-) (limited to 'framework') diff --git a/framework/src/domain/mime/mailtemplates.cpp b/framework/src/domain/mime/mailtemplates.cpp index 0380fa5c..4a8778f2 100644 --- a/framework/src/domain/mime/mailtemplates.cpp +++ b/framework/src/domain/mime/mailtemplates.cpp @@ -970,15 +970,18 @@ KMime::Message::Ptr MailTemplates::createMessage(KMime::Message::Ptr existingMes KMime::Content *bodyPart; if (!attachments.isEmpty()) { - mail->contentType(true)->setMimeType("multipart/mixed"); - mail->contentType()->setBoundary(KMime::multiPartBoundary()); - mail->contentTransferEncoding()->setEncoding(KMime::Headers::CE7Bit); - mail->setPreamble("This is a multi-part message in MIME format.\n"); + bodyPart = new KMime::Content; + bodyPart->contentType(true)->setMimeType("multipart/mixed"); + bodyPart->contentType()->setBoundary(KMime::multiPartBoundary()); + bodyPart->contentTransferEncoding()->setEncoding(KMime::Headers::CE7Bit); + bodyPart->setPreamble("This is a multi-part message in MIME format.\n"); + bodyPart->addContent(createBodyPart(body.toUtf8())); for (const auto &attachment : attachments) { - mail->addContent(createAttachmentPart(attachment.data, attachment.filename, attachment.isInline, attachment.mimeType, attachment.name)); + bodyPart->addContent(createAttachmentPart(attachment.data, attachment.filename, attachment.isInline, attachment.mimeType, attachment.name)); } + } else { + bodyPart = createBodyPart(body.toUtf8()); } - bodyPart = createBodyPart(body.toUtf8()); mail->assemble(); KMime::Content *signedResult = nullptr; diff --git a/framework/src/domain/mime/tests/mailtemplatetest.cpp b/framework/src/domain/mime/tests/mailtemplatetest.cpp index e814f75f..50d2d869 100644 --- a/framework/src/domain/mime/tests/mailtemplatetest.cpp +++ b/framework/src/domain/mime/tests/mailtemplatetest.cpp @@ -213,6 +213,7 @@ private slots: qWarning().noquote() << result->encodedContent(); qWarning() << "---------------------------------"; QCOMPARE(result->subject()->asUnicodeString(), subject); + QVERIFY(result->date(false)->dateTime().isValid()); QVERIFY(result->contentType()->isMimeType("multipart/signed")); const auto contents = result->contents(); @@ -243,7 +244,22 @@ private slots: auto result = MailTemplates::createMessage({}, to, cc, bcc, from, subject, body, attachments, keys); QVERIFY(result); + QCOMPARE(result->subject()->asUnicodeString(), subject); + QVERIFY(result->date(false)->dateTime().isValid()); QVERIFY(result->contentType()->isMimeType("multipart/signed")); + + const auto contents = result->contents(); + QCOMPARE(contents.size(), 2); + { + auto c = contents.at(0); + QVERIFY(c->contentType()->isMimeType("multipart/mixed")); + //1 text + 2 attachments + QCOMPARE(c->contents().size(), 3); + } + { + auto c = contents.at(1); + QVERIFY(c->contentType()->isMimeType("application/pgp-signature")); + } } }; -- cgit v1.2.3