Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony Swiftmailer未在开发模式下向传送地址发送电子邮件_Symfony_Email_Swiftmailer - Fatal编程技术网

Symfony Swiftmailer未在开发模式下向传送地址发送电子邮件

Symfony Swiftmailer未在开发模式下向传送地址发送电子邮件,symfony,email,swiftmailer,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::newInstan

我无法将电子邮件发送到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')
,因为我想在cycle中指定/更改smtp设置-配置存储在数据库中,而不是parameters.yml中。也许这就是问题所在


(Symfony版本2.8.16,Swiftmailer 5.4.5)

如果您使用以下方式获得邮件:

$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');

你有关于它的日志吗?在prod.log或dev.log中没有相关内容,这是什么意思?谢谢,它只需稍加修改即可工作:$this->getContainer()->getParameter('swiftmailer.mailer.default.delivery_addresses');而不是$this->getContainer()->getParameter('swiftmailer.delivery_addresses')。谢谢