From 64436e0787382d5c7fb3dae5b6128e1d93a77979 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 2 Aug 2017 16:52:45 -0600 Subject: Moved mailcomposing into mailtemplates so we can start testing it. --- framework/src/domain/composercontroller.cpp | 84 +---------------------------- 1 file changed, 1 insertion(+), 83 deletions(-) (limited to 'framework/src/domain/composercontroller.cpp') diff --git a/framework/src/domain/composercontroller.cpp b/framework/src/domain/composercontroller.cpp index 3c2b7fc1..311c79f3 100644 --- a/framework/src/domain/composercontroller.cpp +++ b/framework/src/domain/composercontroller.cpp @@ -383,88 +383,6 @@ void ComposerController::recordForAutocompletion(const QByteArray &addrSpec, con } } -static KMime::Content *createAttachmentPart(const QByteArray &content, const QString &filename, bool isInline, const QByteArray &mimeType, const QString &name) -{ - - KMime::Content *part = new KMime::Content; - part->contentDisposition(true)->setFilename(filename); - if (isInline) { - part->contentDisposition(true)->setDisposition(KMime::Headers::CDinline); - } else { - part->contentDisposition(true)->setDisposition(KMime::Headers::CDattachment); - } - part->contentType(true)->setMimeType(mimeType); - part->contentType(true)->setName(name, "utf-8"); - //Just always encode attachments base64 so it's safe for binary data - part->contentTransferEncoding(true)->setEncoding(KMime::Headers::CEbase64); - part->setBody(content); - return part; -} - -static KMime::Content *createBodyPart(const QByteArray &body) { - auto mainMessage = new KMime::Content; - mainMessage->setBody(body); - mainMessage->contentType(true)->setMimeType("text/plain"); - return mainMessage; -} - -struct Attachment { - QString name; - QString filename; - QByteArray mimeType; - bool isInline; - QByteArray data; -}; - -static 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, const QList &attachments) -{ - auto mail = existingMessage; - if (!mail) { - mail = KMime::Message::Ptr::create(); - } - mail->to(true)->clear(); - applyAddresses(to, [&](const QByteArray &addrSpec, const QByteArray &displayName) { - mail->to(true)->addAddress(addrSpec, displayName); - }); - - mail->cc(true)->clear(); - applyAddresses(cc, [&](const QByteArray &addrSpec, const QByteArray &displayName) { - mail->cc(true)->addAddress(addrSpec, displayName); - }); - - mail->bcc(true)->clear(); - applyAddresses(bcc, [&](const QByteArray &addrSpec, const QByteArray &displayName) { - mail->bcc(true)->addAddress(addrSpec, displayName); - }); - - mail->from(true)->addAddress(from); - - mail->subject(true)->fromUnicodeString(subject, "utf-8"); - if (!mail->messageID()) { - mail->messageID(true)->generate("org.kde.kube"); - } - if (!mail->date(true)->dateTime().isValid()) { - mail->date(true)->setDateTime(QDateTime::currentDateTimeUtc()); - } - - 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"); - for (const auto &attachment : attachments) { - mail->addContent(createAttachmentPart(attachment.data, attachment.filename, attachment.isInline, attachment.mimeType, attachment.name)); - } - mail->addContent(createBodyPart(body.toUtf8())); - } else { - //FIXME same implementation as above for attachments - mail->setBody(body.toUtf8()); - } - - mail->assemble(); - return mail; -} - KMime::Message::Ptr ComposerController::assembleMessage() { applyAddresses(mToModel->stringList(), [&](const QByteArray &addrSpec, const QByteArray &displayName) { @@ -491,7 +409,7 @@ KMime::Message::Ptr ComposerController::assembleMessage() }; } } - return createMessage(mExistingMessage, mToModel->stringList(), mCcModel->stringList(), mBccModel->stringList(), getIdentity(), getSubject(), getBody(), attachments); + return MailTemplates::createMessage(mExistingMessage, mToModel->stringList(), mCcModel->stringList(), mBccModel->stringList(), getIdentity(), getSubject(), getBody(), attachments); } void ComposerController::updateSendAction() -- cgit v1.2.3