в проекте с интенсивной электронной почтой мы создаем асинхронный рабочий процесс для публикации электронных писем. Рабочий процесс состоит из 2 шагов:
создание сообщения (мы устанавливаем тему, от, кому, тело, вложения), затем преобразование в строку через
$mailer->toString()
и сохранение в базе данных.получить несколько последних писем из базы данных и отправить их пользователям.
Строка, хранящаяся в базе данных, на самом деле является допустимым составным файлом EML (например, может быть открыт с помощью Outlook) с заголовками сообщения + телом.
ВОПРОС:
Как отправить сообщение, преобразованное в строку, через SwiftMailer, используя его транспортные возможности?
Спасибо.
Пример сохраненной строки в базе данных:
Message-ID: <[email protected]>
Date: Mon, 16 Oct 2017 13:50:31 +0200
Subject: Sample subject
From: [email protected]
Reply-To: [email protected]
To: [email protected]
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="_=_swift_v4_1508154632_faf5d3b80866048d993d77a62a9e6497_=_"
--_=_swift_v4_1508154632_faf5d3b80866048d993d77a62a9e6497_=_
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
sample body ...
--_=_swift_v4_1508154632_faf5d3b80866048d993d77a62a9e6497_=_
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org=
/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns=3D"http://www.w3.org/1999/xhtml">
<head>
=09<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8"=
/>
=09<title>Sample title</title>
=09</head>
<body>
=09=09
=09sample body ...
=09</body>
</html>
--_=_swift_v4_1508154632_faf5d3b80866048d993d77a62a9e6497_=_--
$mailer->PreSend()
. На самом деле это было довольно легко. Нам не нужно беспокоиться о том, что какой-то класс изменился для электронных писем, находящихся в очереди на несколько месяцев. - person lubosdz   schedule 01.10.2018