Symfony:在命令中测试电子邮件发送

时间:2016-06-09 08:18:13

标签: php symfony email command

早上好。

我想在我的Symfony Command中测试发送电子邮件。

我的电子邮件由\Swift_Mailer发送

$this->mailer->send($message);

我尝试使用它:

http://symfony.com/doc/current/cookbook/email/testing.html

但是$this->client->getProfile()Symfony Response在Symfony Command中不可用。

Argument 1 passed to Symfony\Component\HttpKernel\Profiler\Profiler::loadProfileFromResponse() must be an instance of Symfony\Component\HttpFoundation\Response, null given,

现在我如何验证我的电子邮件是否正确发送?

2 个答案:

答案 0 :(得分:4)

测试命令时,您应该有$kernel变量。从那里你得到$kernel->getContainer()的容器。使用容器,您可以访问消息记录器:$container->get('swiftmailer.mailer.default.plugin.messagelogger')。那是。现在,您有一个Swift_Plugins_MessageLogger的实例,其中#getMessages会返回已发送的消息。

答案 1 :(得分:1)

您可以将swiftmailer的假脱机类型放到文件中,然后计算该路径中的文件。

在symfony4中可能是:

测试/ swiftmailer.yaml

 swiftmailer:
    spool:
        type: file
        path: 'path/to/emailTestFolder'

测试文件

$mails = new \FilesystemIterator('path/to/emailTestFolder', \FilesystemIterator::SKIP_DOTS);
$this->assertSame(1, iterator_count($mails));