diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-08-10 21:36:17 -0600 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-08-10 21:38:37 -0600 |
commit | e07a23c486f67cc2014af3fd8a639a13dd100162 (patch) | |
tree | c2e5e739b590ece4941672f3a55508ef06d6d1ac /framework/src/domain/mime/mailtemplates.cpp | |
parent | e354603dcb42c54ab11c0c393d5a1607ed6343d7 (diff) | |
download | kube-e07a23c486f67cc2014af3fd8a639a13dd100162.tar.gz kube-e07a23c486f67cc2014af3fd8a639a13dd100162.zip |
splitAddress does not work if the name has a comma in it
With i.e. "Mollekopf, Christian <mollekopf@example.org>", we'l end up
with an address "Mollekopf" and one "Christian <mollekopf@example.org>".
Diffstat (limited to 'framework/src/domain/mime/mailtemplates.cpp')
-rw-r--r-- | framework/src/domain/mime/mailtemplates.cpp | 45 |
1 files changed, 19 insertions, 26 deletions
diff --git a/framework/src/domain/mime/mailtemplates.cpp b/framework/src/domain/mime/mailtemplates.cpp index bafe12d4..7bfcf38e 100644 --- a/framework/src/domain/mime/mailtemplates.cpp +++ b/framework/src/domain/mime/mailtemplates.cpp | |||
@@ -36,7 +36,6 @@ | |||
36 | 36 | ||
37 | #include <KCodecs/KCharsets> | 37 | #include <KCodecs/KCharsets> |
38 | #include <KMime/Types> | 38 | #include <KMime/Types> |
39 | #include <KCodecs/KEmailAddress> | ||
40 | 39 | ||
41 | #include <mimetreeparser/objecttreeparser.h> | 40 | #include <mimetreeparser/objecttreeparser.h> |
42 | 41 | ||
@@ -851,12 +850,12 @@ void MailTemplates::reply(const KMime::Message::Ptr &origMsg, const std::functio | |||
851 | const auto htmlContent = otp.htmlContent(); | 850 | const auto htmlContent = otp.htmlContent(); |
852 | 851 | ||
853 | plainMessageText(plainTextContent, htmlContent, stripSignature, [=] (const QString &body) { | 852 | plainMessageText(plainTextContent, htmlContent, stripSignature, [=] (const QString &body) { |
854 | //Quoted body */ | 853 | //Quoted body |
855 | QString plainQuote = quotedPlainText(body, origMsg->from()->displayString()); | 854 | QString plainQuote = quotedPlainText(body, origMsg->from()->displayString()); |
856 | if (plainQuote.endsWith(QLatin1Char('\n'))) { | 855 | if (plainQuote.endsWith(QLatin1Char('\n'))) { |
857 | plainQuote.chop(1); | 856 | plainQuote.chop(1); |
858 | } | 857 | } |
859 | //The plain body is complete */ | 858 | //The plain body is complete |
860 | auto plainBodyResult = plainBody + plainQuote; | 859 | auto plainBodyResult = plainBody + plainQuote; |
861 | htmlMessageText(plainTextContent, htmlContent, stripSignature, [=] (const QString &body, const QString &headElement) { | 860 | htmlMessageText(plainTextContent, htmlContent, stripSignature, [=] (const QString &body, const QString &headElement) { |
862 | //The html body is complete | 861 | //The html body is complete |
@@ -916,22 +915,17 @@ static KMime::Content *createBodyPart(const QByteArray &body) { | |||
916 | return mainMessage; | 915 | return mainMessage; |
917 | } | 916 | } |
918 | 917 | ||
919 | static void applyAddresses(const QStringList &list, std::function<void(const QByteArray &, const QByteArray &)> callback) | 918 | static KMime::Types::Mailbox::List stringListToMailboxes(const QStringList &list) |
920 | { | 919 | { |
921 | for (const auto &to : list) { | 920 | KMime::Types::Mailbox::List mailboxes; |
922 | QByteArray displayName; | 921 | for (const auto &s : list) { |
923 | QByteArray addrSpec; | 922 | KMime::Types::Mailbox mb; |
924 | QByteArray comment; | 923 | mb.fromUnicodeString(s); |
925 | KEmailAddress::splitAddress(to.toUtf8(), displayName, addrSpec, comment); | 924 | mailboxes << mb; |
926 | callback(addrSpec, displayName); | ||
927 | } | 925 | } |
926 | return mailboxes; | ||
928 | } | 927 | } |
929 | 928 | ||
930 | // static void applyAddresses(const QString &list, std::function<void(const QByteArray &, const QByteArray &)> callback) | ||
931 | // { | ||
932 | // applyAddresses(KEmailAddress::splitAddressList(list), callback); | ||
933 | // } | ||
934 | |||
935 | 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, const QList<Attachment> &attachments, const std::vector<GpgME::Key> &signingKeys) | 929 | 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, const QList<Attachment> &attachments, const std::vector<GpgME::Key> &signingKeys) |
936 | { | 930 | { |
937 | auto mail = existingMessage; | 931 | auto mail = existingMessage; |
@@ -940,20 +934,19 @@ KMime::Message::Ptr MailTemplates::createMessage(KMime::Message::Ptr existingMes | |||
940 | } | 934 | } |
941 | 935 | ||
942 | mail->to(true)->clear(); | 936 | mail->to(true)->clear(); |
943 | applyAddresses(to, [&](const QByteArray &addrSpec, const QByteArray &displayName) { | 937 | for (const auto &mb : stringListToMailboxes(to)) { |
944 | mail->to(true)->addAddress(addrSpec, displayName); | 938 | mail->to()->addAddress(mb); |
945 | }); | 939 | } |
946 | |||
947 | mail->cc(true)->clear(); | 940 | mail->cc(true)->clear(); |
948 | applyAddresses(cc, [&](const QByteArray &addrSpec, const QByteArray &displayName) { | 941 | for (const auto &mb : stringListToMailboxes(cc)) { |
949 | mail->cc(true)->addAddress(addrSpec, displayName); | 942 | mail->cc()->addAddress(mb); |
950 | }); | 943 | } |
951 | |||
952 | mail->bcc(true)->clear(); | 944 | mail->bcc(true)->clear(); |
953 | applyAddresses(bcc, [&](const QByteArray &addrSpec, const QByteArray &displayName) { | 945 | for (const auto &mb : stringListToMailboxes(bcc)) { |
954 | mail->bcc(true)->addAddress(addrSpec, displayName); | 946 | mail->bcc()->addAddress(mb); |
955 | }); | 947 | } |
956 | 948 | ||
949 | mail->from(true)->clear(); | ||
957 | mail->from(true)->addAddress(from); | 950 | mail->from(true)->addAddress(from); |
958 | 951 | ||
959 | mail->subject(true)->fromUnicodeString(subject, "utf-8"); | 952 | mail->subject(true)->fromUnicodeString(subject, "utf-8"); |