Uložení mailu do databáze

pernica@tomp.eu
Člen | 10
+
0
-

Ahoj,
řeším odesílání e-mailů, přes frontu v databázi a Cron, který to posléze odesílá.
Jen bojuji s uložením Nette\Mail\Message do DB. Jak RAW mi to funguje. Ale chtěl bych serializovat objekt Message. Není to čistá Nette aplikace, nepoužívá DI.

Serializace

public static function toArray(Nette\Mail\Message $mail): array
	{
		return [
			'from' => $mail->getHeader('From'),
			'to' => $mail->getHeader('To'),
			'cc' => $mail->getHeader('Cc'),
			'bcc' => $mail->getHeader('Bcc'),
			'subject' => $mail->getSubject(),
			'html' => $mail->getHtmlBody(),
			'text' => $mail->getBody(),
			'attachments' => array_map(
				fn($a) => [
					'name' => $a->getName(),
					'content' => base64_encode($a->getBody()),
					'contentType' => $a->getContentType(),
				],
				$mail->getAttachments()
			),

		];
	}

Uložení do fronty

	public static function queueMail(Message $mail, int $priority = 0): void
	{
		global $database;

		$serializedMail = self::toArray($mail);

		$database->table('mail_queue')->insert([
			'sender' => implode(',', array_keys($mail->getFrom())),
			'recipients' => json_encode($mail->getHeader('To')),
			'subject' => $mail->getSubject(),
			'body_html' => $mail->getHtmlBody(),
			'body_text' => $mail->getBody(),
			'message' => json_encode($serializedMail),
			'priority' => $priority,
			'created_at' => new DateTimeImmutable(),
			'status' => 'queued',
		]);
	}

Tohle funguje docela dobře. Ale chybí mi v tom obrázky, tj. embedded přílohy, které vloží Latte.
Nějaký nápad, jak to vyřešit? Nebo jdu vůbec správnou cestou?