diff options
Diffstat (limited to 'src')
-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) |