summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libraries/qmfmessageserver/qmailmessageservice.cpp3
-rw-r--r--src/plugins/messageservices/smtp/smtpservice.cpp20
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)