diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2021-03-10 11:15:53 +0300 |
---|---|---|
committer | Christoph Wurst <christoph@winzerhof-wurst.at> | 2021-03-10 11:55:40 +0300 |
commit | 16c1f64f23be029ddcf3f064f3dd9df8f1bec7e6 (patch) | |
tree | 4ca4c0d2286b21bd1dba7edb5f3fe953ebd94310 /lib/Model | |
parent | a1abe625981f9ca2b643cd2b8dfe5777f82699a4 (diff) |
Generate an IMAP message ID when it's missing
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'lib/Model')
-rw-r--r-- | lib/Model/IMAPMessage.php | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/Model/IMAPMessage.php b/lib/Model/IMAPMessage.php index bd8437e72..5481ecddd 100644 --- a/lib/Model/IMAPMessage.php +++ b/lib/Model/IMAPMessage.php @@ -39,6 +39,7 @@ use Horde_Imap_Client_Ids; use Horde_Imap_Client_Mailbox; use Horde_Imap_Client_Socket; use Horde_Mime_Headers; +use Horde_Mime_Headers_MessageId; use Horde_Mime_Part; use JsonSerializable; use OC; @@ -50,6 +51,7 @@ use OCP\Files\File; use OCP\Files\SimpleFS\ISimpleFile; use function in_array; use function mb_convert_encoding; +use function trim; class IMAPMessage implements IMessage, JsonSerializable { use ConvertAddresses; @@ -121,6 +123,10 @@ class IMAPMessage implements IMessage, JsonSerializable { */ private $fetch; + public static function generateMessageId(): string { + return Horde_Mime_Headers_MessageId::create('nextcloud-mail-generated')->value; + } + /** * @return int */ @@ -669,10 +675,16 @@ class IMAPMessage implements IMessage, JsonSerializable { public function toDbMessage(int $mailboxId): \OCA\Mail\Db\Message { $msg = new \OCA\Mail\Db\Message(); + $messageId = $this->getMessageId(); + if (empty(trim($messageId))) { + // Sometimes the message ID is missing. Then we create one. + $messageId = self::generateMessageId(); + } + $msg->setUid($this->getUid()); - $msg->setMessageId($this->getMessageId()); + $msg->setMessageId($messageId); $msg->setRawReferences($this->getRawReferences()); - $msg->setThreadRootId($this->getMessageId()); + $msg->setThreadRootId($messageId); $msg->setInReplyTo($this->getRawInReplyTo()); $msg->setMailboxId($mailboxId); $msg->setFrom($this->getFrom()); |