Merge pull request #43 from altaris/master

Added Reply-To support
This commit is contained in:
Attila Tőkés 2017-06-01 20:14:38 +03:00 committed by GitHub
commit 12c810ada9
5 changed files with 54 additions and 15 deletions

View File

@ -16,8 +16,6 @@ TEMPLATE = lib
DEFINES += SMTP_BUILD
win32:CONFIG += dll
QMAKE_CXXFLAGS += -fPIC
SOURCES += \
src/emailaddress.cpp \
src/mimeattachment.cpp \

View File

@ -24,6 +24,7 @@
/* [1] Constructors and Destructors */
MimeMessage::MimeMessage(bool createAutoMimeContent) :
replyTo(Q_NULLPTR),
hEncoding(MimePart::_8Bit)
{
if (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<EmailAddress*> & MimeMessage::getRecipients(RecipientType type) cons
}
}
const EmailAddress* MimeMessage::getReplyTo() const {
return replyTo;
}
const QString & MimeMessage::getSubject() const
{
return subject;
@ -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();

View File

@ -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<EmailAddress*> & getRecipients(RecipientType type = To) const;
const QString & getSubject() const;
const QList<MimePart*> & getParts() const;
const EmailAddress* getReplyTo() const;
MimePart& getContent();
void setContent(MimePart *content);
@ -77,6 +79,7 @@ protected:
/* [4] Protected members */
EmailAddress* sender;
EmailAddress* replyTo;
QList<EmailAddress*> recipientsTo, recipientsCc, recipientsBcc;
QString subject;
MimePart *content;

View File

@ -25,6 +25,7 @@
/* [1] Constructors and destructors */
SmtpClient::SmtpClient(const QString & host, int port, ConnectionType connectionType) :
socket(NULL),
name("localhost"),
authMethod(AuthPlain),
connectionTimeout(5000),
@ -44,7 +45,10 @@ SmtpClient::SmtpClient(const QString & host, int port, ConnectionType connection
this, SLOT(socketReadyRead()));
}
SmtpClient::~SmtpClient() {}
SmtpClient::~SmtpClient() {
if (socket)
delete socket;
}
/* [1] --- */
@ -80,6 +84,9 @@ void SmtpClient::setConnectionType(ConnectionType ct)
{
this->connectionType = ct;
if (socket)
delete socket;
switch (connectionType)
{
case TcpConnection:
@ -325,7 +332,7 @@ bool SmtpClient::login(const QString &user, const QString &password, AuthMethod
}
}
}
catch (ResponseTimeoutException e)
catch (ResponseTimeoutException)
{
// Responce Timeout exceeded
emit smtpError(AuthenticationFailedError);
@ -421,7 +428,7 @@ void SmtpClient::quit()
/* [4] Protected methods */
void SmtpClient::waitForResponse() throw (ResponseTimeoutException)
void SmtpClient::waitForResponse()
{
do {
if (!socket->waitForReadyRead(responseTimeout))
@ -448,7 +455,7 @@ void SmtpClient::waitForResponse() throw (ResponseTimeoutException)
} while (true);
}
void SmtpClient::sendMessage(const QString &text) throw (SendMessageTimeoutException)
void SmtpClient::sendMessage(const QString &text)
{
socket->write(text.toUtf8() + "\r\n");
if (! socket->waitForBytesWritten(sendMessageTimeout))
@ -463,11 +470,11 @@ void SmtpClient::sendMessage(const QString &text) throw (SendMessageTimeoutExcep
/* [5] Slots for the socket's signals */
void SmtpClient::socketStateChanged(QAbstractSocket::SocketState state)
void SmtpClient::socketStateChanged(QAbstractSocket::SocketState /*state*/)
{
}
void SmtpClient::socketError(QAbstractSocket::SocketError socketError)
void SmtpClient::socketError(QAbstractSocket::SocketError /*socketError*/)
{
}

View File

@ -60,7 +60,7 @@ public:
/* [1] Constructors and Destructors */
SmtpClient(const QString & host = "locahost", int port = 25, ConnectionType ct = TcpConnection);
SmtpClient(const QString & host = "localhost", int port = 25, ConnectionType ct = TcpConnection);
~SmtpClient();
@ -154,9 +154,9 @@ protected:
/* [5] Protected methods */
void waitForResponse() throw (ResponseTimeoutException);
void waitForResponse();
void sendMessage(const QString &text) throw (SendMessageTimeoutException);
void sendMessage(const QString &text);
/* [5] --- */