diff --git a/lib/Controller/OutboxController.php b/lib/Controller/OutboxController.php index 382333dabc..3dadf7f811 100644 --- a/lib/Controller/OutboxController.php +++ b/lib/Controller/OutboxController.php @@ -221,6 +221,10 @@ public function update( $message->setSmimeEncrypt($smimeEncrypt); $message->setRequestMdn($requestMdn); + // Updating the message should reset its status. Else it's impossible to + // retry an erroneous one. + $message->setStatus(LocalMessage::STATUS_RAW); + if (!empty($smimeCertificateId)) { $smimeCertificate = $this->smimeService->findCertificate($smimeCertificateId, $this->userId); $message->setSmimeCertificateId($smimeCertificate->getId()); diff --git a/lib/Service/OutboxService.php b/lib/Service/OutboxService.php index d8f3247c0e..7778073e54 100644 --- a/lib/Service/OutboxService.php +++ b/lib/Service/OutboxService.php @@ -172,6 +172,9 @@ public function updateMessage(Account $account, LocalMessage $message, array $to $ccRecipients = self::convertToRecipient($cc, Recipient::TYPE_CC); $bccRecipients = self::convertToRecipient($bcc, Recipient::TYPE_BCC); + // The message is changed, so any previous error should be ignored + $message->setFailed(false); + $message = $this->mapper->updateWithRecipients($message, $toRecipients, $ccRecipients, $bccRecipients); if ($attachments === []) {