Symfony 3 和 Mailhog:邮件未被 mailhog 缓存
Symfony 3 and Mailhog: mails not being cached by mailhog
在我的开发环境中,我想使用 mailhog 来捕获电子邮件。我已经安装并配置了我的 php.ini 来代替 sendmail 属性。
如果在命令行中 i 运行 this
php -r "mail(......);"
邮件被 mailhog 捕获。问题出在 Symfony 和 Swiftmailer 上。为了进行测试,我用这个创建了一个非常简单的控制器:
/**
* @return Response
*/
public function homeAction() : Response
{
mail('some@mail.com', 'tasest', 'aaaa');
$message = \Swift_Message::newInstance()
->setSubject('Hello Email')
->setFrom('send@example.com')
->setTo('recipient@example.com')
->setBody(
'aaaaa',
'text/html'
);
$this->get('mailer')->send($message);
return $this->render('::base.html.twig');
}
现在,mail 函数发送的电子邮件被 mailhog 捕获。但不是SwiftMailer发送的邮件。
在我的 config_dev 我有这个:
# Swiftmailer Configuration
swiftmailer:
transport: "sendmail"
我认为应该足够了。
我是不是遗漏了什么?
P.S.: 如果我使用真实地址(而不是收件人@example.com),电子邮件将被发送和接收
更新:
我还尝试为 smtp 配置 mailhog,parameters.yml:
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 }
结果还是一样
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
我对 Symfony 4 也有同样的问题。
如果删除config/packages/swiftmailer.yaml
中的变量url: '%env(MAILER_URL)%'
,它应该可以工作。
在我的开发环境中,我想使用 mailhog 来捕获电子邮件。我已经安装并配置了我的 php.ini 来代替 sendmail 属性。 如果在命令行中 i 运行 this
php -r "mail(......);"
邮件被 mailhog 捕获。问题出在 Symfony 和 Swiftmailer 上。为了进行测试,我用这个创建了一个非常简单的控制器:
/**
* @return Response
*/
public function homeAction() : Response
{
mail('some@mail.com', 'tasest', 'aaaa');
$message = \Swift_Message::newInstance()
->setSubject('Hello Email')
->setFrom('send@example.com')
->setTo('recipient@example.com')
->setBody(
'aaaaa',
'text/html'
);
$this->get('mailer')->send($message);
return $this->render('::base.html.twig');
}
现在,mail 函数发送的电子邮件被 mailhog 捕获。但不是SwiftMailer发送的邮件。
在我的 config_dev 我有这个:
# Swiftmailer Configuration
swiftmailer:
transport: "sendmail"
我认为应该足够了。
我是不是遗漏了什么?
P.S.: 如果我使用真实地址(而不是收件人@example.com),电子邮件将被发送和接收
更新: 我还尝试为 smtp 配置 mailhog,parameters.yml:
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 }
结果还是一样
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
我对 Symfony 4 也有同样的问题。
如果删除config/packages/swiftmailer.yaml
中的变量url: '%env(MAILER_URL)%'
,它应该可以工作。