早上好。
我想在我的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,
现在我如何验证我的电子邮件是否正确发送?
答案 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));