sentMailboxHandler; $handlers->setNext($this->antiAbuseHandler) ->setNext($this->sendHandler) ->setNext($this->copySentMessageHandler) ->setNext($this->flagRepliedMessageHandler); /** * Skip all messages that errored out indeterminedly in the SMTP send. * @see \Horde_Smtp_Exception for the error codes that are inderminate * They might or might not have been sent already. */ if ($localMessage->getStatus() === LocalMessage::STATUS_ERROR) { throw new ServiceException('Could not send message because a previous send operation produced an unclear sent state.'); } $client = $this->clientFactory->getClient($account); try { $result = $handlers->process($account, $localMessage, $client); } finally { $client->logout(); } if ($result->getStatus() === LocalMessage::STATUS_PROCESSED) { $this->attachmentService->deleteLocalMessageAttachments($account->getUserId(), $result->getId()); $this->localMessageMapper->deleteWithRecipients($result); return $localMessage; } return $this->localMessageMapper->update($result); } }