Não é possível enviar e-mail a partir do comando Symfony2 personalizado, mas pode partir de outro local no aplicativo
Eu escrevi um comando de console personalizado para consultar meu banco de dados, produzir um relatório e enviá-lo por e-mail para um endereço; no entanto, parece que não consigo enviar o e-mail com sucesso. Eu posso enviar e-mail bem de dentro de controladores normais em outro lugar dentro do meu aplicativo, e também posso enviá-lo de dentro do meu comando do console se eu criar e configurar manualmente uma instância do Swift_Mailer e não obtê-la através do contêiner.
Aqui está uma versão simplificada do meu comando de console:
<?php
namespace Foo\ReportBundle\Command;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class ExpiryCommand extends ContainerAwareCommand
{
protected function configure()
{
$this->setName('report:expiry')
->setDescription('Compile and send e-mail listing imminent expiries');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
/* ... */
$message = \Swift_Message::newInstance()
->setSubject('Expiry report')
->setFrom('[email protected]')
->setTo('[email protected]')
->setBody($body);
$mailer = $this->getContainer()->get('mailer');
/* This works...
$transport = \Swift_SmtpTransport::newInstance('smtp.domain.com', 25)
->setUsername('username')
->setPassword('password');
$mailer = \Swift_Mailer::newInstance($transport);
*/
$result = $mailer->send($message);
$output->writeln($result);
}
}
O Swiftmailer está configurado para enviar via SMTP dentro do meuapp/config/config.yml
Arquivo (delivery_address: [email protected]
também é definido emapp/config/config_dev.yml
):
swiftmailer:
transport: smtp
host: smtp.domain.com
username: username
password: password
spool:
type: memory
Ao executar o comando, imprime1
para a linha de comando, o que eu suponho que significa que foi bem sucedido. No entanto, estou monitorando os logs do meu servidor de e-mail ao mesmo tempo e ele nem está se conectando.
Para confirmar que minha configuração estava sendo carregada no mailer, alterei o spool dememory
parafile
e as mensagens estão sendo colocadas em spool no sistema de arquivos ao executar o comando e eu posso liberar com êxito o spool na linha de comando comphp app/console swiftmailer:spool:send
.
Alguém tem alguma idéia do que está acontecendo aqui, ou alguma sugestão de como eu posso depurá-lo ainda mais? Nada está aparecendo no meuapp/logs/dev.log
Arquivo. Estou usando o Symfony 2.1.3-DEV.