Changeset View
Changeset View
Standalone View
Standalone View
framework/src/domain/mime/mailtemplates.cpp
Show First 20 Lines • Show All 1019 Lines • ▼ Show 20 Line(s) | 1018 | { | |||
---|---|---|---|---|---|
1020 | for (const auto &s : list) { | 1020 | for (const auto &s : list) { | ||
1021 | KMime::Types::Mailbox mb; | 1021 | KMime::Types::Mailbox mb; | ||
1022 | mb.fromUnicodeString(s); | 1022 | mb.fromUnicodeString(s); | ||
1023 | mailboxes << mb; | 1023 | mailboxes << mb; | ||
1024 | } | 1024 | } | ||
1025 | return mailboxes; | 1025 | return mailboxes; | ||
1026 | } | 1026 | } | ||
1027 | 1027 | | |||
1028 | KMime::Message::Ptr MailTemplates::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<Attachment> &attachments, const std::vector<GpgME::Key> &signingKeys, const std::vector<GpgME::Key> &encryptionKeys) | 1028 | KMime::Message::Ptr MailTemplates::createMessage(KMime::Message::Ptr existingMessage, | ||
1029 | const QStringList &to, const QStringList &cc, const QStringList &bcc, | ||||
1030 | const KMime::Types::Mailbox &from, const QString &subject, const QString &body, bool htmlBody, | ||||
1031 | const QList<Attachment> &attachments, const std::vector<GpgME::Key> &signingKeys, | ||||
1032 | const std::vector<GpgME::Key> &encryptionKeys, const GpgME::Key &attachedKey) | ||||
1029 | { | 1033 | { | ||
1030 | auto mail = existingMessage; | 1034 | auto mail = existingMessage; | ||
1031 | if (!mail) { | 1035 | if (!mail) { | ||
1032 | mail = KMime::Message::Ptr::create(); | 1036 | mail = KMime::Message::Ptr::create(); | ||
1033 | } else { | 1037 | } else { | ||
1034 | //Content type is part of the body part we're creating | 1038 | //Content type is part of the body part we're creating | ||
1035 | mail->removeHeader<KMime::Headers::ContentType>(); | 1039 | mail->removeHeader<KMime::Headers::ContentType>(); | ||
1036 | mail->removeHeader<KMime::Headers::ContentTransferEncoding>(); | 1040 | mail->removeHeader<KMime::Headers::ContentTransferEncoding>(); | ||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Line(s) | 1076 | std::unique_ptr<KMime::Content> bodyPart{[&] { | |||
1084 | } else { | 1088 | } else { | ||
1085 | return createBodyPart(body, htmlBody); | 1089 | return createBodyPart(body, htmlBody); | ||
1086 | } | 1090 | } | ||
1087 | }()}; | 1091 | }()}; | ||
1088 | bodyPart->assemble(); | 1092 | bodyPart->assemble(); | ||
1089 | 1093 | | |||
1090 | QByteArray bodyData; | 1094 | QByteArray bodyData; | ||
1091 | if (!signingKeys.empty() || !encryptionKeys.empty()) { | 1095 | if (!signingKeys.empty() || !encryptionKeys.empty()) { | ||
1092 | auto result = MailCrypto::processCrypto(bodyPart.get(), signingKeys, encryptionKeys, MailCrypto::OPENPGP); | 1096 | auto result = MailCrypto::processCrypto(std::move(bodyPart), signingKeys, encryptionKeys, attachedKey); | ||
1093 | if (!result) { | 1097 | if (!result) { | ||
1094 | qWarning() << "Signing failed"; | 1098 | qWarning() << "Crypto failed"; | ||
1095 | return {}; | 1099 | return {}; | ||
1096 | } | 1100 | } | ||
1097 | bodyData = result->encodedContent(); | 1101 | bodyData = result.value()->encodedContent(); | ||
1098 | } else { | 1102 | } else { | ||
1099 | if (!bodyPart->contentType(false)) { | 1103 | if (!bodyPart->contentType(false)) { | ||
1100 | bodyPart->contentType(true)->setMimeType("text/plain"); | 1104 | bodyPart->contentType(true)->setMimeType("text/plain"); | ||
1101 | bodyPart->assemble(); | 1105 | bodyPart->assemble(); | ||
1102 | } | 1106 | } | ||
1103 | bodyData = bodyPart->encodedContent(); | 1107 | bodyData = bodyPart->encodedContent(); | ||
1104 | } | 1108 | } | ||
1105 | 1109 | | |||
1106 | KMime::Message::Ptr resultMessage(new KMime::Message); | 1110 | KMime::Message::Ptr resultMessage(new KMime::Message); | ||
1107 | resultMessage->setContent(mail->head() + bodyData); | 1111 | resultMessage->setContent(mail->head() + bodyData); | ||
1108 | resultMessage->parse(); // Not strictly necessary. | 1112 | resultMessage->parse(); // Not strictly necessary. | ||
1109 | return resultMessage; | 1113 | return resultMessage; | ||
1110 | } | 1114 | } |