Skip to content

Commit 81dcc4f

Browse files
committed
fix: Keep raw message on smtp/mime failure
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
1 parent 195e435 commit 81dcc4f

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

lib/Service/MailTransmission.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Horde_Imap_Client_Data_Fetch;
1515
use Horde_Imap_Client_Fetch_Query;
1616
use Horde_Imap_Client_Ids;
17+
use Horde_Mail_Exception;
1718
use Horde_Mail_Rfc822_Address;
1819
use Horde_Mail_Rfc822_List;
1920
use Horde_Mail_Transport_Null;
@@ -51,6 +52,7 @@
5152
use OCP\AppFramework\Db\DoesNotExistException;
5253
use OCP\EventDispatcher\IEventDispatcher;
5354
use Psr\Log\LoggerInterface;
55+
use Throwable;
5456

5557
class MailTransmission implements IMailTransmission {
5658
private const RETRIABLE_CODES = [
@@ -172,13 +174,19 @@ public function sendMessage(Account $account, LocalMessage $localMessage): void
172174
$localMessage->setStatus(LocalMessage::STATUS_SMPT_SEND_FAIL);
173175
return;
174176
}
177+
178+
try {
179+
$localMessage->setRaw($mail->getRaw(false));
180+
} catch (Throwable) {
181+
// Having the raw message is nice for troubleshooting, but should not fail hard.
182+
}
175183
$localMessage->setStatus(LocalMessage::STATUS_ERROR);
176184
return;
177185
} finally {
178186
if ($transport instanceof Horde_Mail_Transport_Smtphorde) {
179187
try {
180188
$transport->getSMTPObject()->logout();
181-
} catch (\Throwable $e) {
189+
} catch (Throwable) {
182190
// Handle silently as this is a resource usage optimization
183191
}
184192
}

0 commit comments

Comments
 (0)