Symfony 3和Mailhog:邮件没有被mailhog缓存

问题描述 投票:2回答:2

在我的开发环境中,我想使用mailhog来捕获电子邮件。我安装并配置了我的php.ini来替换sendmail属性。如果在命令行中我运行它

php -r "mail(......);" 

邮件被mailhog捕获。问题在于Symfony和Swiftmailer。为了进行测试,我创建了一个非常简单的控制器:

/**
     * @return Response
     */
    public function homeAction() : Response
    {
        mail('[email protected]', 'tasest', 'aaaa');
        $message = \Swift_Message::newInstance()
            ->setSubject('Hello Email')
            ->setFrom('[email protected]')
            ->setTo('[email protected]')
            ->setBody(
                'aaaaa',
                'text/html'
            );
        $this->get('mailer')->send($message);
        return $this->render('::base.html.twig');
    }

现在,邮件功能发送的电子邮件被mailhog捕获。但不是SwiftMailer发送的邮件。

在我的config_dev中我有这个:

    # Swiftmailer Configuration
swiftmailer:
    transport: "sendmail"

我认为应该足够了。

我在这里错过了什么吗?

P.S。:如果我使用真实地址(而不是[email protected]),则会发送和接收电子邮件

更新:我还尝试为smtp,parameters.yml配置mailhog:

mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_port: 1025
mailer_user: null
mailer_password: null

config.yml:

swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    port:      "%mailer_port%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"
    spool:     { type: memory }

但结果是相同的结果。

php symfony email development-environment
2个回答
2
投票

Symfony中的Swiftmailer设置通常会有更完整的配置,特别是在config_dev.yml中,以明确发送它的位置。

swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    port:      "%mailer_port%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"

在这里,如果Mailhog位于端口1025(非常典型),那么开发环境中的parameters.yml将设置为这样,以填充.yml文件中的参数:

mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_port: 1025
mailer_user: null
mailer_password: null

0
投票

我对Symfony 4也有同样的问题。如果你删除url: '%env(MAILER_URL)%'中的变量config/packages/swiftmailer.yaml,它应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.