From c2a734791a07c78ee4d2583989141f11c5a8b83c Mon Sep 17 00:00:00 2001 From: Cedric HT Date: Wed, 13 Jan 2016 15:31:25 +0100 Subject: [PATCH] Added Reply-To support --- src/mimemessage.cpp | 37 ++++++++++++++++++++++++++++++++++--- src/mimemessage.h | 5 ++++- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/mimemessage.cpp b/src/mimemessage.cpp index 0c4ebc2..cb2050e 100644 --- a/src/mimemessage.cpp +++ b/src/mimemessage.cpp @@ -24,11 +24,12 @@ /* [1] Constructors and Destructors */ MimeMessage::MimeMessage(bool createAutoMimeContent) : + replyTo(Q_NULLPTR), hEncoding(MimePart::_8Bit) { if (createAutoMimeContent) this->content = new MimeMultiPart(); - + autoMimeContentCreated = createAutoMimeContent; } @@ -58,6 +59,10 @@ void MimeMessage::setContent(MimePart *content) { this->content = content; } +void MimeMessage::setReplyTo(EmailAddress* rto) { + replyTo = rto; +} + void MimeMessage::setSender(EmailAddress* e) { this->sender = e; @@ -127,6 +132,10 @@ const QList & MimeMessage::getRecipients(RecipientType type) cons } } +const EmailAddress* MimeMessage::getReplyTo() const { + return replyTo; +} + const QString & MimeMessage::getSubject() const { return subject; @@ -175,7 +184,7 @@ QString MimeMessage::toString() /* ---------------------------------- */ - /* ------- Recipients / To ---------- */ + /* ------- Recipients / To ---------- */ mime += "To:"; QList::iterator it; int i; for (i = 0, it = recipientsTo.begin(); it != recipientsTo.end(); ++it, ++i) @@ -245,9 +254,31 @@ QString MimeMessage::toString() default: mime += subject; } + mime += "\r\n"; + /* ---------------------------------- */ + + /* ---------- Reply-To -------------- */ + if (replyTo) { + mime += "Reply-To: "; + if (replyTo->getName() != "") + { + switch (hEncoding) + { + case MimePart::Base64: + mime += " =?utf-8?B?" + QByteArray().append(replyTo->getName()).toBase64() + "?="; + break; + case MimePart::QuotedPrintable: + mime += " =?utf-8?Q?" + QuotedPrintable::encode(QByteArray().append(replyTo->getName())).replace(' ', "_").replace(':',"=3A") + "?="; + break; + default: + mime += " " + replyTo->getName(); + } + } + mime += " <" + replyTo->getAddress() + ">\r\n"; + } + /* ---------------------------------- */ - mime += "\r\n"; mime += "MIME-Version: 1.0\r\n"; mime += content->toString(); diff --git a/src/mimemessage.h b/src/mimemessage.h index 18b4ec3..1a12cd3 100644 --- a/src/mimemessage.h +++ b/src/mimemessage.h @@ -53,6 +53,7 @@ public: void addBcc(EmailAddress* rcpt); void setSubject(const QString & subject); void addPart(MimePart* part); + void setReplyTo(EmailAddress* rto); void setHeaderEncoding(MimePart::Encoding); @@ -60,6 +61,7 @@ public: const QList & getRecipients(RecipientType type = To) const; const QString & getSubject() const; const QList & getParts() const; + const EmailAddress* getReplyTo() const; MimePart& getContent(); void setContent(MimePart *content); @@ -77,11 +79,12 @@ protected: /* [4] Protected members */ EmailAddress* sender; + EmailAddress* replyTo; QList recipientsTo, recipientsCc, recipientsBcc; QString subject; MimePart *content; bool autoMimeContentCreated; - + MimePart::Encoding hEncoding; /* [4] --- */