diff options
author | Valerio Valerio <valerio.valerio@jollamobile.com> | 2013-04-29 09:06:09 +0300 |
---|---|---|
committer | Valerio Valerio <valerio.valerio@jollamobile.com> | 2013-04-30 11:44:28 +0200 |
commit | 2c26e21e4dc809808141660cda268b4c5a7837b7 (patch) | |
tree | e579f16f0c5207eaa5d4a537174b742bcee3a7d4 | |
parent | 3a4d4f35890c911bb5a91de36d52f9275a5b41fb (diff) |
Modify smtp transmitMessages action to test connection.4.0.0
Modify smtp transmitMessages to connect to server even
if there's no messages queued for transmission, this allows clients
to test server credentials.
Signed-off-by: Valerio Valerio <valerio.valerio@jollamobile.com>
Change-Id: I665082d688432f1a99bf70f09ec6f4afaf65f9f0
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
-rw-r--r-- | src/libraries/qmfmessageserver/qmailmessageservice.cpp | 3 | ||||
-rw-r--r-- | src/plugins/messageservices/smtp/smtpservice.cpp | 20 |
2 files changed, 9 insertions, 14 deletions
diff --git a/src/libraries/qmfmessageserver/qmailmessageservice.cpp b/src/libraries/qmfmessageserver/qmailmessageservice.cpp index 88c60339..ad164dde 100644 --- a/src/libraries/qmfmessageserver/qmailmessageservice.cpp +++ b/src/libraries/qmfmessageserver/qmailmessageservice.cpp @@ -1261,6 +1261,9 @@ QMailMessageSink::~QMailMessageSink() Messages for which for which an unsuccessful attempt to transmit has been made should be progressively reported via messagesFailedTransmission(). + If \a ids is an empty list, the sink should still proceed through all the steps necessary when transmitting messages, + as this action may be invoked to test the viability of the connection. + Return true if an operation is initiated. */ bool QMailMessageSink::transmitMessages(const QMailMessageIdList &ids) diff --git a/src/plugins/messageservices/smtp/smtpservice.cpp b/src/plugins/messageservices/smtp/smtpservice.cpp index 116476b4..5cace7f7 100644 --- a/src/plugins/messageservices/smtp/smtpservice.cpp +++ b/src/plugins/messageservices/smtp/smtpservice.cpp @@ -76,15 +76,12 @@ private: bool SmtpService::Sink::transmitMessages(const QMailMessageIdList &ids) { - bool messageQueued = false; QMailMessageIdList failedMessages; if (!ids.isEmpty()) { foreach (const QMailMessageId id, ids) { QMailMessage message(id); - if (_service->_client.addMail(message) == QMailServiceAction::Status::ErrNoError) { - messageQueued = true; - } else { + if (!(_service->_client.addMail(message) == QMailServiceAction::Status::ErrNoError)) { failedMessages << id; } } @@ -94,16 +91,11 @@ bool SmtpService::Sink::transmitMessages(const QMailMessageIdList &ids) emit messagesFailedTransmission(failedMessages, QMailServiceAction::Status::ErrInvalidAddress); } - QMailAccount account(_service->accountId()); - if (messageQueued || (account.customField("qmf-smtp-capabilities-listed") != "true")) { - // At least one message could be queued for sending - // or the smtp server capabilities (e.g. forward without download capable) are not known - _service->_client.newConnection(); - } else { - // No messages to send, so sending completed successfully - QTimer::singleShot(0, this, SLOT(sendCompleted())); - } - return true; + // Open new connection, even if there's no messages queued for transmission, client might + // want to test the connection or the smtp server capabilities + // (e.g. forward without download capable) are not known + _service->_client.newConnection(); + return true; } void SmtpService::Sink::messageTransmitted(const QMailMessageId &id) |