php-Swift Mailer和Symfony2-线轴中没有邮件
作者:互联网
来自Swift Mailer官方论坛交叉发布.
我正在尝试使用Swift Mailer捆绑包和文件假脱机发送电子邮件,但是当我告诉控制台发送邮件时,它告诉我在假脱机中有0条消息.后台打印程序应该由Swift Mailer自动创建,还是需要手动创建文件?因为我在任何地方都看不到假脱机文件.
我的config.yml:
# Swiftmailer Configuration
swiftmailer:
transport: sendmail
host: /usr/bin/sendmail
username: %mailer_user%
password: %mailer_password%
spool:
type: file
path: "%kernel.root_dir%/spool"
我如何发送邮件:
public function contactAction(Request $request)
{
$form = $this->createFormBuilder()
->add('name', 'text', array('label' => 'Name:'))
->add('email', 'email', array('label' => 'Email Address:'))
->add('subject', 'text', array('label' => 'Subject:'))
->add('message', 'textarea', array('label' => 'Message:'))
->getForm();
if ($request->isMethod('POST')) {
$form->bind($request);
$data = $form->getData();
if (!empty($data['name'])) {
$data['message'] = str_replace("\n.", "\n..", $data['message']);
$emailValidator = new Email();
$emailValidator->message = "Invalid email address";
$error = $this->get('validator')->validateValue($data['email'], $emailValidator);
if (count($error) == 0) {
$mail = \Swift_Message::newInstance()
->setSubject($data['subject'])
->setFrom('mail@mysite.com')
->setTo('me@myrealaddress.com')
->setBody($data['message']);
$this->get('mailer')->send($mail);
return $this->redirect($this->generateUrl('_success'));
} else {
return $this->redirect($this->generateUrl('_failure'));
}
}
}
我究竟做错了什么?根据Symfony文档,这应该可以工作.
解决方法:
在标准安装中,路径:“%kernel.root_dir%/ spool”等同于app / spool,要在此目录中创建和写入,运行Web服务器的用户需要特定的权限.
但是,如果您不想更改目录的权限,则可以始终使用具有以下配置的缓存文件夹:
# Swiftmailer Configuration
swiftmailer:
transport: sendmail
host: /usr/bin/sendmail
username: %mailer_user%
password: %mailer_password%
spool:
type: file
path: "%kernel.cache_dir%/swiftmailer/spool"
请注意,这样做时,在清除缓存时必须非常小心,因为如果您有未发送的电子邮件,它们将与其他缓存文件一起消失.
标签:symfony,php,swiftmailer 来源: https://codeday.me/bug/20191031/1975236.html