Swift Mailer - 异步发送电子邮件

时间:2017-10-16 12:17:00

标签: php email asynchronous swiftmailer

对于具有密集电子邮件活动的项目,我们正在创建用于发布电子邮件的异步工作流程。工作流程包括两个步骤:

  1. 创建消息(我们设置Subject,From,to,body,attachments),然后通过$mailer->toString()转换为字符串并存储到数据库中。

  2. 从数据库中获取最新的电子邮件,并将其发送给用户。

  3. 存储到数据库中的字符串实际上是有效的多部分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_=_--
    

1 个答案:

答案 0 :(得分:0)

toString序列化邮件转换回Swift_Message没有简单的方法。相反,您应该使用serialize函数将要存储在数据库中的Swift_Message转换回字符串。

$data = serialize($message);
// store inside database
// ...
// later..
$message = unserialize($message);
$mailer->send($message);