Swiftmailer不以开发模式向delivery_addresses发送电子邮件

时间:2017-08-23 07:33:03

标签: symfony email swiftmailer

我无法将电子邮件发送到config_dev.yml中指定的电子邮件地址:

swiftmailer:
    delivery_addresses: ['dev@example.com']

我正在尝试从控制台命令发送:

php app/console ecard:task:run send --env=dev

控制台命令代码:

...
foreach ($emailQueue as $item) {
    $transport = Swift_SmtpTransport::newInstance($item['smtp_host'])
        ->setPort($item['smtp_port'])
        ->setUserName($item['smtp_login'])
        ->setPassword($item['smtp_password'])
        ->setEncryption('ssl');

    $mailer = Swift_Mailer::newInstance($transport);

    $message = Swift_Message::newInstance()
           ->setSubject($item['email_subject'])
           ->setFrom($item['email_from'], $item['email_from_name'])
           ->setTo($item['email_to'])
           ->addPart($item['email_template'], 'text/html');

    $ret = $mailer->send($message, $failedRecipients);
        ....
}

电子邮件将发送到真实的收件人地址,而不是我在config_dev.yml中指定的地址。

如果我在代码中转储$this->getContainer()->getParameter('kernel.environment'),那么它就是' dev'。

我没有以这种方式获得$ mailer:$this->getContainer()->get('mailer'),因为我想在循环中指定/更改smtp设置 - 配置存储在数据库中,而不是存储在parameters.yml中。也许这就是问题?

(Symfony版本2.8.16,Swiftmailer 5.4.5)

1 个答案:

答案 0 :(得分:2)

如果你的邮件是:

$mailer = Swift_Mailer::newInstance($transport);

然后忽略config.yml中指定的所有参数。

在这种情况下,您必须在代码中设置目标地址,就像使用其他邮件程序参数一样:

  $message = Swift_Message::newInstance()
       ->setSubject($item['email_subject'])
       ->setFrom($item['email_from'], $item['email_from_name'])
       ->setTo($this->getContainer()->getParameter('swiftmailer.delivery_addresses')?:$item['email_to'])
       ->addPart($item['email_template'], 'text/html');