Symfony 3.1 swiftmailer电子邮件不发送

时间:2016-11-05 15:46:45

标签: symfony swiftmailer

我想通过使用Symfony 3.1和SwiftMailer发送测试电子邮件,但它不起作用。我正在阅读其他解决方案,但它仍然无效。

Config.yml:

swiftmailer:
    transport: %mailer_transport%
    encryption: %mailer_encryption%
    auth_mode:  %mailer_auth_mode%
    host:      %mailer_host%
    username:  %mailer_user%
    password:  %mailer_password%
    spool:     { type: memory }

Parameters.yml

mailer_transport: smtp
    mailer_encryption: ssl
    mailer_auth_mode: login
    mailer_host: smtp.gmail.com
    mailer_user: user@gmail.com
    mailer_password: mypass

Parameters.yml v.2我正在尝试:

 mailer_transport: gmail
        mailer_encryption: ssl
        mailer_auth_mode: login
        mailer_host: smtp.gmail.com
        mailer_user: user@gmail.com
        mailer_password: mypass

控制器:

public function contactAction(Request $request)
    {
        $name = $request->request->get('name');
        $surname = $request->request->get('surname');
        $email = $request->request->get('email');
        $subject = $request->request->get('subject');
        $message = $request->request->get('message');
        $data = "";
        if($request->request->get('contact_submit')){

            $message = \Swift_Message::newInstance()
                ->setSubject($subject)
                ->setFrom($email)
                ->setTo('myemail@gmail.com')
                ->setBody($message);

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

            $data = "Thank you: $name";

        }
        return $this->render('przedszkole/contact.html.twig', array('data' => $data));      
    }

所以点击提交后,我的视图会更改并显示给我:谢谢$ name,但我没有收到任何电子邮件:/

我改变了我的gmail电子邮件的安全性lvl,就像有人在其他解决方案中说的那样,但它对我没有帮助:/

我还取消注释swiftmailer:config_dev.yml中的delivery_adress。

我将不胜感激任何帮助:/

3 个答案:

答案 0 :(得分:0)

如何使用(仅)以下YML配置:

mailer_transport: gmail
     mailer_user: user@gmail.com
     mailer_password: mypass

我读到有些默认设置你不需要为gmail设置,也许是因为你正在设置,它有一定的效果。我不确定这是否能解决问题,但您可以尝试一下。

答案 1 :(得分:0)

我猜问题可能是电子邮件进入假脱机队列。这也是我和别人见过的。您可以使用以下方法明确禁用它:

spool:
     enabled: false

答案 2 :(得分:0)

我有机会调试你的代码,我得到的是你需要更改这两行

->setFrom($email)
->setTo('myemail@gmail.com')

作为

->setFrom('myemail@gmail.com')
->setTo($email)

setFrom()将包含您的电子邮件ID,setTo()将包含收件人ID。