在开发模式下在Synfony 3中发送电子邮件

时间:2017-09-25 01:09:53

标签: symfony email swiftmailer

需要帮助学习如何使用Symfony框架和Swift_mailer库在开发模式下发送电子邮件。

这是我到目前为止所拥有的

在config_dev.yml文件中

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

在config.yml文件中

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

在我的parameters.yml文件中

....
 mailer_transport: gmail
 mailer_host: 127.0.0.1
 mailer_user: 'my_gamil_here'
 mailer_password: 'my_password_here'

然后在我的控制器中,我有以下

public function indexAction(\Swift_Mailer $mailer)
{



    $message = (new \Swift_Message('Hello Email'))
    ->setFrom('westtexascentral555@gmail.com')
    ->setTo('kaleyaw@yahoo.com')
    ->setBody(
        $this->renderView(
            // app/Resources/views/Emails/registration.html.twig
            'Emails/registration.html.twig',
            array('name' => 'James')
        ),
        'text/html'
    );

    $mailer->send($message);

    return new Response('Email sent');
}

}

有人可以告诉我我的错误。什么都没有发送到电子邮件帐户。

3 个答案:

答案 0 :(得分:1)

也许是因为您将邮件主机指定为localhost。检查此symfony docs http://symfony.com/doc/current/email/gmail.html。并注意这一部分:

  

gmail传输只是一个使用smtp传输的快捷方式   并设置这些选项:

encryption  ssl

auth_mode   login

host    smtp.gmail.com

答案 1 :(得分:0)

' mailer_transport'是发送邮件的协议  尝试使用' smtp'相反' gmail' :)

答案 2 :(得分:0)

  1. 确保mailer_user仅设置为您的gmail用户名(没有主机部分)。假设我有电子邮件myemail@gmail.com,我的用户名为myemail

  2. 您是否对gmail帐户使用了两步验证?如果是这样,您还需要按照docs中的规定为您的帐户生成应用密码:

  3.   

    如果您的Gmail帐户使用两步验证,则必须generate an App password并将其用作mailer_password参数的值。您还必须确保allow less secure apps to access your Gmail account

    很快,您可以关注here,登录,选择应用(在本例中为Mail)和您要使用邮件的设备,按Generate,您会看到模式您的应用密码,类似于此snub udpz xcvt jrdp。复制此密码,并将其用作您的Gmail密码(不含空格)。

    如果这没有帮助,也检查日志,通常如果smtp服务器出现问题,swiftmailer会将错误打印到日志中。