对于具有密集电子邮件活动的项目,我们正在创建用于发布电子邮件的异步工作流程。工作流程包括两个步骤:
创建消息(我们设置Subject,From,to,body,attachments),然后通过$mailer->toString()
转换为字符串并存储到数据库中。
从数据库中获取最新的电子邮件,并将其发送给用户。
存储到数据库中的字符串实际上是有效的多部分EML文件(例如可以使用Outlook打开),邮件头+正文。
问题:
如何使用它的传输功能通过SwiftMailer发送转换为String的消息?
谢谢。
数据库中存储的字符串示例:
Message-ID: <1803a1a74c7612e43d58a8ca558117f3@refactoring.local>
Date: Mon, 16 Oct 2017 13:50:31 +0200
Subject: Sample subject
From: info@refactoring.local
Reply-To: info@refactoring.local
To: aaa@bbb.cc
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_=_--
答案 0 :(得分:0)
将toString
序列化邮件转换回Swift_Message
没有简单的方法。相反,您应该使用serialize
函数将要存储在数据库中的Swift_Message
转换回字符串。
$data = serialize($message);
// store inside database
// ...
// later..
$message = unserialize($message);
$mailer->send($message);