У меня есть Symfony проект, который (очень упрощенно) выглядит следующим образом:
Controller / MyToolController. php
namespace App\Controller;
use App\Services\ToolsService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class MyToolController extends AbstractController
{
private $toolsService;
/**
* @param ToolsService|null $toolsService
*/
public function __construct(ToolsService $toolsService = null) {
$this->toolsService = $toolsService;
}
public function run() {
// some more code here...
$mailContent = $this->render('site/mail.html.twig', $data)->getContent();
$this->toolsService->sendMail($from, $to, $bcc, $mailContent, $subject);
// if I remove the following line, no emails are sent out!
return $this->render('site/thankyou.html.twig', $data);
}
}
Services / MyToolService. php
namespace App\Services;
class ToolsService
{
/** @var \Swift_Mailer */
private $mailer;
/**
* @param \Swift_Mailer $mailer
*/
public function __construct(\Swift_Mailer $mailer)
{
$this->mailer = $mailer;
}
public function sendMail($from, $to, $bcc, $body, $subject) {
$mail = ( new \Swift_Message() )
->setSubject($subject)
->setFrom($from)
->setTo($to)
->setBcc($bcc)
->addPart($body, 'text/html');
$res = $this->mailer->send($mail);
$this->logger->info('Email sent');
return $res;
}
}
Если вы посмотрите на MyToolController.php
, вы увидите, что я вызываю службу, которая отправляет электронное письмо.
Если я возвращаю Response
объект в моей функции run()
, все идет хорошо - но если я опущу это, ничего не будет отправлено. То же самое, если я отправляю несколько писем в al oop и у меня возникает тайм-аут.
Странно $mailer->send()
вызывается в любом случае - и возвращается 1 - и я вижу запись в журнале, который я пишу в функции sendmail()
. Но никакая электронная почта не покидает сервер.
Это моя конфигурация SwiftMailer:
swiftmailer:
url: '%env(MAILER_URL)%'
spool: { type: 'memory' }