No se puede enviar un correo electrónico desde el comando Symfony2 personalizado, pero se puede enviar desde otro lugar en la aplicación
He escrito un comando de consola personalizado para consultar mi base de datos, generar un informe y enviarlo por correo electrónico a una dirección; Sin embargo, parece que no puedo enviar con éxito el correo electrónico. Puedo enviar una multa por correo electrónico desde los controladores normales a otra parte de mi aplicación, y también puedo enviarla desde el comando de mi consola si creo y configuro manualmente una instancia de Swift_Mailer y no la obtengo a través del contenedor.
Aquí hay una versión simplificada de mi comando de consola:
<?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);
}
}
Swiftmailer está configurado para enviar a través de SMTP dentro de miapp/config/config.yml
expediente (delivery_address: [email protected]
también se establece enapp/config/config_dev.yml
):
swiftmailer:
transport: smtp
host: smtp.domain.com
username: username
password: password
spool:
type: memory
Al ejecutar el comando, se imprime.1
a la línea de comando, que supongo que significa que fue exitoso. Sin embargo, estoy monitoreando los registros de mi servidor de correo al mismo tiempo, y ni siquiera se está conectando.
Para confirmar que mi configuración se estaba cargando en la aplicación de correo, cambié el spool dememory
afile
y los mensajes se envían al sistema de archivos cuando se ejecuta el comando y puedo vaciar el carrete en la línea de comandos con éxitophp app/console swiftmailer:spool:send
.
¿Alguien tiene alguna idea sobre lo que está sucediendo aquí o alguna sugerencia sobre cómo puedo depurarlo más? Nada esta apareciendo en miapp/logs/dev.log
expediente. Estoy usando Symfony 2.1.3-DEV.