需要帮助学习如何使用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');
}
}
有人可以告诉我我的错误。什么都没有发送到电子邮件帐户。
答案 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)
确保mailer_user
仅设置为您的gmail用户名(没有主机部分)。假设我有电子邮件myemail@gmail.com
,我的用户名为myemail
。
您是否对gmail帐户使用了两步验证?如果是这样,您还需要按照docs中的规定为您的帐户生成应用密码:
如果您的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会将错误打印到日志中。