diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-10-08 14:33:32 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-10-08 14:33:32 +0200 |
commit | 00bcc137ab2d82d786f1b4423f3d3b4e5c30e71d (patch) | |
tree | 35823c71543a2804a90db5f8b1c3e86c7b328013 /framework/src/domain/mime/mailtemplates.cpp | |
parent | 5948dfeef0685477c9bd98f7d08508a6688c04d1 (diff) | |
download | kube-00bcc137ab2d82d786f1b4423f3d3b4e5c30e71d.tar.gz kube-00bcc137ab2d82d786f1b4423f3d3b4e5c30e71d.zip |
Html with attachments
Diffstat (limited to 'framework/src/domain/mime/mailtemplates.cpp')
-rw-r--r-- | framework/src/domain/mime/mailtemplates.cpp | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/framework/src/domain/mime/mailtemplates.cpp b/framework/src/domain/mime/mailtemplates.cpp index 25ce1385..02e71bce 100644 --- a/framework/src/domain/mime/mailtemplates.cpp +++ b/framework/src/domain/mime/mailtemplates.cpp | |||
@@ -906,7 +906,7 @@ static KMime::Content *createAttachmentPart(const QByteArray &content, const QSt | |||
906 | return part; | 906 | return part; |
907 | } | 907 | } |
908 | 908 | ||
909 | static KMime::Content *createBodyPart(const QByteArray &body) { | 909 | static KMime::Content *createPlainBodyPart(const QByteArray &body) { |
910 | auto mainMessage = new KMime::Content; | 910 | auto mainMessage = new KMime::Content; |
911 | mainMessage->setBody(body); | 911 | mainMessage->setBody(body); |
912 | mainMessage->contentType(true)->setMimeType("text/plain"); | 912 | mainMessage->contentType(true)->setMimeType("text/plain"); |
@@ -920,6 +920,24 @@ static KMime::Content *createHtmlBodyPart(const QByteArray &body) { | |||
920 | return mainMessage; | 920 | return mainMessage; |
921 | } | 921 | } |
922 | 922 | ||
923 | static KMime::Content *createBodyPart(const QByteArray &body, bool htmlBody) { | ||
924 | if (htmlBody) { | ||
925 | auto bodyPart = new KMime::Content; | ||
926 | bodyPart->contentType(true)->setMimeType("multipart/alternative"); | ||
927 | bodyPart->contentType()->setBoundary(KMime::multiPartBoundary()); | ||
928 | |||
929 | QTextDocument doc; | ||
930 | doc.setHtml(body); | ||
931 | |||
932 | bodyPart->addContent(createPlainBodyPart(doc.toPlainText().toUtf8())); | ||
933 | bodyPart->addContent(createHtmlBodyPart(body)); | ||
934 | return bodyPart; | ||
935 | } else { | ||
936 | return createPlainBodyPart(body); | ||
937 | } | ||
938 | return nullptr; | ||
939 | } | ||
940 | |||
923 | static KMime::Types::Mailbox::List stringListToMailboxes(const QStringList &list) | 941 | static KMime::Types::Mailbox::List stringListToMailboxes(const QStringList &list) |
924 | { | 942 | { |
925 | KMime::Types::Mailbox::List mailboxes; | 943 | KMime::Types::Mailbox::List mailboxes; |
@@ -975,25 +993,12 @@ KMime::Message::Ptr MailTemplates::createMessage(KMime::Message::Ptr existingMes | |||
975 | bodyPart->contentType()->setBoundary(KMime::multiPartBoundary()); | 993 | bodyPart->contentType()->setBoundary(KMime::multiPartBoundary()); |
976 | bodyPart->contentTransferEncoding()->setEncoding(KMime::Headers::CE7Bit); | 994 | bodyPart->contentTransferEncoding()->setEncoding(KMime::Headers::CE7Bit); |
977 | bodyPart->setPreamble("This is a multi-part message in MIME format.\n"); | 995 | bodyPart->setPreamble("This is a multi-part message in MIME format.\n"); |
978 | //TODO deal with html | 996 | bodyPart->addContent(createBodyPart(body.toUtf8(), htmlBody)); |
979 | bodyPart->addContent(createBodyPart(body.toUtf8())); | ||
980 | for (const auto &attachment : attachments) { | 997 | for (const auto &attachment : attachments) { |
981 | bodyPart->addContent(createAttachmentPart(attachment.data, attachment.filename, attachment.isInline, attachment.mimeType, attachment.name)); | 998 | bodyPart->addContent(createAttachmentPart(attachment.data, attachment.filename, attachment.isInline, attachment.mimeType, attachment.name)); |
982 | } | 999 | } |
983 | } else { | 1000 | } else { |
984 | if (htmlBody) { | 1001 | bodyPart = createBodyPart(body.toUtf8(), htmlBody); |
985 | bodyPart = new KMime::Content; | ||
986 | bodyPart->contentType(true)->setMimeType("multipart/alternative"); | ||
987 | bodyPart->contentType()->setBoundary(KMime::multiPartBoundary()); | ||
988 | |||
989 | QTextDocument doc; | ||
990 | doc.setHtml(body); | ||
991 | |||
992 | bodyPart->addContent(createBodyPart(doc.toPlainText().toUtf8())); | ||
993 | bodyPart->addContent(createHtmlBodyPart(body.toUtf8())); | ||
994 | } else { | ||
995 | bodyPart = createBodyPart(body.toUtf8()); | ||
996 | } | ||
997 | } | 1002 | } |
998 | bodyPart->assemble(); | 1003 | bodyPart->assemble(); |
999 | 1004 | ||