首页 文章

Swift Mailer和Symfony2 - 假脱机中没有邮件

提问于
浏览
3

来自官方Swift梅勒集团的交叉发布....

我正在尝试使用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文档,这应该是有效的 .

1 回答

  • 4

    在标准安装中, path: "%kernel.root_dir%/spool" 等同于 app/spool ,要在此目录中创建和写入,运行Web服务器的用户需要特定权限 .

    但是,如果您不想更改目录的权限,则始终可以使用具有以下配置的 cache 文件夹:

    # Swiftmailer Configuration
    swiftmailer:
        transport: sendmail
        host:      /usr/bin/sendmail
        username:  %mailer_user%
        password:  %mailer_password%
        spool:
            type: file
            path: "%kernel.cache_dir%/swiftmailer/spool"
    

    Please note 通过这样做,您在清除缓存时必须非常小心,因为如果您有未发送的电子邮件,它们将与其他缓存文件一起消失 .

相关问题