У меня проблема с отправкой писем с Symfony.
swiftmailer.yaml
swiftmailer:
default_mailer: gmail_api
mailers:
gmail_api:
transport: gmail_api
Как видите, я не использую спулинг.
Мои электронные письма правильно отправляются из контроллера, но не из команды.
Из контроллера send () возвращает 1, и я получаю электронное письмо.
namespace App\Controller;
use Sonata\AdminBundle\Controller\CRUDController as Controller;
class CRUDController extends Controller
{
private $mailer;
...
public function __construct(\Swift_Mailer $mailer)
{
$this->mailer = $mailer;
...
}
private function sendEmail($object, $identifiant, $type)
{
$message = (new \Swift_Message('xxx ' . $identifiant))
->setFrom('xxx@xxx.xx')
->setTo('xxx@xxx.xx')
->setBody(
$this->renderView(
...
),
'text/html'
)
->attach(\Swift_Attachment::fromPath('xxx');
try {
$logger = new \Swift_Plugins_Loggers_ArrayLogger();
$this->mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($logger));
$numSent = $this->mailer->send($message);
if ($numSent < 1) {
$this->addFlash('sonata_flash_error', 'Fail to send e-mail');
} else {
if (method_exists($object, 'getMailing')
&& method_exists($object, 'setMailing')) {
$object->setMailing($object->getMailing() + 1);
$this->em->persist($object);
$this->em->flush();
}
}
} catch (\Swift_TransportException $e) {
$this->addFlash('sonata_flash_error', $e->getMessage());
}
dump($logger->dump());
exit();
}
\ Swift_Plugins_Loggers_ArrayLogger дайте мне:
++ Запуск Swift_Transport_EsmtpTransport ... << 250 OK </p>
Из команды send () возвращает 0, и я не получаю письмо.
class ExempleCommand extends Command
{
private $mailer;
...
public function __construct(\Swift_Mailer $mailer)
{
parent::__construct();
$this->mailer = $mailer;
...
}
protected function sendNotificationMail(OutputInterface $output, $subject, $body)
{
$logger = new \Swift_Plugins_Loggers_ArrayLogger();
$this->mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($logger));
$message = (new \Swift_Message($subject))
->setFrom('xxx@xxx.xx')
->setTo('xxx@xxx.xx')
->setBody(
$this->twig->render(
...
),
'text/html'
);
try {
$output->write("\n" . $this->mailer->send($message));
} catch (\Swift_TransportException $e) {
echo $e->getMessage();
}
$output->write($logger->dump());
}
\ Swift_Plugins_Loggers_ArrayLogger дайте мне:
++ Запуск приложения \ Сервис \ Электронная почта \ GmailApiTransport ++ Приложение \ Сервис \ Электронная почта \ GmailApiTransport запущен
Почему он не начинается с Swift_Transport_EsmtpTransport в Command?