diff --git a/lib/Db/MessageMapper.php b/lib/Db/MessageMapper.php
index 81f1967a720a85fe9ce57cd5327385fc2a34ac7f..2dfeeb9f3e6a3090494ea5b4fc6c667ad6f15a4c 100644
--- a/lib/Db/MessageMapper.php
+++ b/lib/Db/MessageMapper.php
@@ -406,6 +406,17 @@ class MessageMapper extends QBMapper {
 	}
 
 	public function deleteAll(Mailbox $mailbox): void {
+		$messageIdQuery = $this->db->getQueryBuilder();
+		$deleteRecipientsQuery = $this->db->getQueryBuilder();
+		$messageIdQuery->select('id')
+			->from($this->getTableName())
+			->where($messageIdQuery->expr()->eq('mailbox_id', $deleteRecipientsQuery->createNamedParameter($mailbox->getId())));
+
+		// delete all related recipient entries
+		$deleteRecipientsQuery->delete('mail_recipients')
+			->where($deleteRecipientsQuery->expr()->in('message_id', $deleteRecipientsQuery->createFunction($messageIdQuery->getSQL()), IQueryBuilder::PARAM_INT_ARRAY));
+		$deleteRecipientsQuery->execute();
+
 		$query = $this->db->getQueryBuilder();
 
 		$query->delete($this->getTableName())
@@ -415,6 +426,20 @@ class MessageMapper extends QBMapper {
 	}
 
 	public function deleteByUid(Mailbox $mailbox, int ...$uids): void {
+		$messageIdQuery = $this->db->getQueryBuilder();
+		$deleteRecipientsQuery = $this->db->getQueryBuilder();
+
+		$messageIdQuery->select('id')
+			->from($this->getTableName())
+			->where(
+				$messageIdQuery->expr()->eq('mailbox_id', $deleteRecipientsQuery->createNamedParameter($mailbox->getId())),
+				$messageIdQuery->expr()->in('uid', $deleteRecipientsQuery->createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY))
+			);
+		// delete all related recipient entries
+		$deleteRecipientsQuery->delete('mail_recipients')
+			->where($deleteRecipientsQuery->expr()->in('message_id', $messageIdQuery->createFunction($messageIdQuery->getSQL()), IQueryBuilder::PARAM_INT_ARRAY));
+		$deleteRecipientsQuery->execute();
+
 		$query = $this->db->getQueryBuilder();
 
 		$query->delete($this->getTableName())
diff --git a/tests/psalm-baseline.xml b/tests/psalm-baseline.xml
index 0976805840f7c9c7f2769a0de7b22611228b4c84..c58ef7c3dc4ef4aa5fecba07dd1568d86bcbc54b 100644
--- a/tests/psalm-baseline.xml
+++ b/tests/psalm-baseline.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<files psalm-version="4.4.1@9fd7a7d885b3a216cff8dec9d8c21a132f275224">
+<files psalm-version="4.6.1@e93e532e4eaad6d68c4d7b606853800eaceccc72">
   <file src="lib/Attachment.php">
     <MissingDocblockType occurrences="1">
       <code>$fetch</code>
@@ -30,9 +30,31 @@
     </ImplicitToStringCast>
   </file>
   <file src="lib/Db/MessageMapper.php">
-    <ImplicitToStringCast occurrences="23">
+    <ImplicitToStringCast occurrences="26">
+      <code>$deleteRecipientsQuery-&gt;createFunction($messageIdQuery-&gt;getSQL())</code>
+      <code>$deleteRecipientsQuery-&gt;createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY)</code>
+      <code>$messageIdQuery-&gt;createFunction($messageIdQuery-&gt;getSQL())</code>
       <code>$messagesQuery-&gt;createFunction($mailboxesQuery-&gt;getSQL())</code>
       <code>$qb-&gt;createFunction($mailboxIdsQuery-&gt;getSQL())</code>
+      <code>$qb-&gt;createFunction($mailboxIdsQuery-&gt;getSQL())</code>
+      <code>$qb-&gt;createFunction($selectMailboxIds-&gt;getSQL())</code>
+      <code>$qb-&gt;createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($mailboxIds, IQueryBuilder::PARAM_INT_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($query-&gt;getBcc(), IQueryBuilder::PARAM_STR_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($query-&gt;getBcc(), IQueryBuilder::PARAM_STR_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($query-&gt;getCc(), IQueryBuilder::PARAM_STR_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($query-&gt;getCc(), IQueryBuilder::PARAM_STR_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($query-&gt;getFrom(), IQueryBuilder::PARAM_STR_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($query-&gt;getFrom(), IQueryBuilder::PARAM_STR_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($query-&gt;getTo(), IQueryBuilder::PARAM_STR_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($query-&gt;getTo(), IQueryBuilder::PARAM_STR_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY)</code>
+      <code>$qb-&gt;createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY)</code>
+      <code>$qb2-&gt;createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)</code>
+      <code>$qb2-&gt;createNamedParameter(array_keys($indexedMessages), IQueryBuilder::PARAM_INT_ARRAY)</code>
+      <code>$qb4-&gt;createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)</code>
       <code>$query-&gt;createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)</code>
       <code>$query-&gt;createNamedParameter($uids, IQueryBuilder::PARAM_INT_ARRAY)</code>
     </ImplicitToStringCast>