Symfony3 - 未通过命令发送电子邮件

时间:2017-12-22 12:38:53

标签: php symfony email command swiftmailer

我无法通过prod。中的Symfony3中的命令发送电子邮件。

我的代码:

$message = \Swift_Message::newInstance()
        ->setSubject('A subject')
        ->setFrom('email@site.com')
        ->setTo('email@site.com')
        ->setBody('content', 'text/html');

    $mailer = $this->getContainer()->get('mailer');
    $mailer->send($message);

Config.yml

# Swiftmailer Configuration
swiftmailer:
    transport: '%mailer_transport%'
    host:      '%mailer_host%'
    username:  '%mailer_user%'
    password:  '%mailer_password%'
    port:      '%mailer_port%'
    encryption: '%mailer_encryption%'
    spool: { type: memory }

Parameters.yml

mailer_transport: smtp
mailer_host: myhostfromovh
mailer_encryption: null
mailer_port: 587
mailer_user: myuser
mailer_password: mypassword

我没有收到任何错误,但我的邮箱中没有收到任何电子邮件。 :(

此外,当我在命令行中写道时:

php app/console swiftmailer:email:send

我得到了:

[2017-12-22 13:31:12] app.ERROR: Exception occurred while flushing email queue: Connection could not be established with host myhostfromovh [Connection refused #111] 

我通过smtp.gmail.com或ns0.ovh.net(使用PORT和USER / PASSWORD)更改了我的自定义主机 myhostfromovh ,无所事事,它无法正常工作。 : - (

但是!当我在Controller中执行相同的代码时没问题,我收到了邮件。所以我不明白。

救救我! \ O /

1 个答案:

答案 0 :(得分:0)

您已在swiftmail中启用了电子邮件队列,这意味着电子邮件将在内核事件终止期间排队并发送(在您已将响应发送到客户端之后)。

您应该在var / logs / prod.log上有控制器的错误

似乎您的主机不允许连接到该主机:端口。可能的原因?

  • 您的知识产权已被禁止
  • 错误的IP /端口(配置)
  • 服务提供商/企业/大学防火墙阻止传出smtp连接(现在很常见)

安装mailcatcher https://mailcatcher.me/并尝试将电子邮件发送到您当地的smtp服务器。