Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/mail.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib/Model
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2021-03-10 11:15:53 +0300
committerChristoph Wurst <christoph@winzerhof-wurst.at>2021-03-10 11:55:40 +0300
commit16c1f64f23be029ddcf3f064f3dd9df8f1bec7e6 (patch)
tree4ca4c0d2286b21bd1dba7edb5f3fe953ebd94310 /lib/Model
parenta1abe625981f9ca2b643cd2b8dfe5777f82699a4 (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.php16
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());