Symfony swiftmailer内存假脱机

时间:2016-10-10 07:42:12

标签: php email symfony swiftmailer

我想了解更多关于在swiftmailer中假脱机电子邮件的信息。 实际上,我使用带有线轴类型内存的swiftmailer:

swiftmailer:
    transport:          "%mailer_transport%"
    host:               "%mailer_host%"
    port:               "%mailer_port%"
    encryption:         "%mailer_encryption%"
    username:           "%mailer_user%"
    password:           "%mailer_password%"
    spool:              { type: memory }

我在AJAX中调用的symfony方法中发送这样的电子邮件:

public function ajaxAction(Request $request)
{
    if ($request->isXMLHttpRequest()) {
            $data = $request->request->get('contact');
            $message = \Swift_Message::newInstance()
                ->setSubject('Contact site')
                ->setFrom('postmaster@mywebsite.com')
                ->setTo('contact@mywebsite.com')
                ->setBody(
                    $this->renderView(
                        'MyAppMyBundle:Emails:contact.html.twig',
                        array('name' => $data['name'], 'mail' => $data['mail'], 'message' => $data['message'])
                    ),
                    'text/html'
                );

            $this->get('mailer')->send($message);
            return new Response('Mail sent', 200);
     }
}

这会导致非常耗时的AJAX调用: enter image description here 我预计假脱机会在kernel.terminate事件之后发送电子邮件,但它似乎是在kernel.terminate中完成的。所以AJAX调用很长,我没有把假脱机电子邮件带到预期的优势。 你能救我吗?

1 个答案:

答案 0 :(得分:2)

如Symfony Docs中所述,基于内存的假脱机程序会在kernel.terminate事件之前发送电子邮件。

在这种情况下,您可能希望使用基于文件的假脱机,如How to Spool Emails with Symfony文章中所述。