Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony SwiftMailer:如果控制器未返回$this->;render()响应_Php_Symfony_Symfony4_Swiftmailer - Fatal编程技术网

Php Symfony SwiftMailer:如果控制器未返回$this->;render()响应

Php Symfony SwiftMailer:如果控制器未返回$this->;render()响应,php,symfony,symfony4,swiftmailer,Php,Symfony,Symfony4,Swiftmailer,我有一个Symfony项目,它(非常简化)如下所示: Controller/MyToolController.php Services/MyToolService.php 如果您查看MyToolController.php,您会看到我调用了一个发送电子邮件的服务 如果我在run()函数中返回Response对象,一切都会进行得很顺利-但是如果我忽略了这一点,则不会发送任何内容。同样,如果我在一个循环中发送多封电子邮件,并且遇到超时 奇怪的是,在任何情况下都会调用$mailer->send(),它

我有一个Symfony项目,它(非常简化)如下所示:

Controller/MyToolController.php

Services/MyToolService.php

如果您查看
MyToolController.php
,您会看到我调用了一个发送电子邮件的服务

如果我在
run()
函数中返回
Response
对象,一切都会进行得很顺利-但是如果我忽略了这一点,则不会发送任何内容。同样,如果我在一个循环中发送多封电子邮件,并且遇到超时

奇怪的是,在任何情况下都会调用
$mailer->send()
,它返回1,我在
sendmail()函数中编写的日志中看到一个条目。但是没有电子邮件离开服务器

这是我的SwiftMailer配置:

swiftmailer:
    url: '%env(MAILER_URL)%'
    spool: { type: 'memory' }

您的邮件正在内存中进行后台处理:

当您使用假脱机将电子邮件存储到内存中时,它们将在内核终止之前被发送。这意味着只有当整个请求在没有任何未处理的异常或错误的情况下执行时,才会发送电子邮件

如果您没有从控制器返回
响应
对象,则将出现未处理的异常,整个请求将不会执行,邮件将永远不会发送

控制器需要返回
Symfony\Component\HttpFoundation\Response
,以便正常处理请求。如果要返回空响应,只需执行以下操作:

return new Response();

你的swiftmailer配置是什么?假脱机邮件肯定会导致这种情况。还有swift发送邮件响应Symfony@β.εηοτ.βε-内核结束事件的内核结束事件?听起来很有趣-你有更多的信息吗?谢谢@Gerfried我的记忆不是完全正确的,正如yivi的回答所指出的,正确的事件是正确的,但是从用户体验的角度来看,提供一个空白页面看起来会很糟糕,最好是
$this->redirect('somewhere')
考虑到OP根本不想返回响应,我想这不是他们关心的问题。
swiftmailer:
    url: '%env(MAILER_URL)%'
    spool: { type: 'memory' }
return new Response();