我有一个问题,可以使用gmail在localhost wamp中的symfony中开发生成电子邮件。从模板我得到输入值并在控制器中设置。在congig_dev我有那些 swiftmailer: 运输:gmail 主持人:smtp.gmail.com 用户名:'ringleaderr@gmail.com' 密码:'****'
下面我从controller->
设置程序<?php
namespace PsiutekBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class BasketController extends Controller
{
public function koszykAction()
{
return $this->render('PsiutekBundle:Basket:koszyk.html.twig');
}
public function SendMailAction()
{
$Request=$this->get('request_stack')->getCurrentRequest();
if($Request->getMethod()=="POST"){
$subject=$Request->get("Subject");
print_r($subject);
exit;
$email=$Request->get("email");
$body=$Request->get("message");
print_r($body);
$transport=\Swift_SmtpTransport::newInstance('smtp.gmail.com',465,'ssl')
->setUsername('ringleaderr@gmail.com')
->setPassword('******');
$mailer=\Swift_Mailer::newInstance($transport);
$message = \Swift_Message::newInstance('Web Lead')
->setSubject($subject)
->setTo($email)
->setBody($body);
$result=$mailer->send($message);
}
return $this->render('PsiutekBundle:Basket:koszyk.html.twig');
}
}
答案 0 :(得分:0)
要在Symfony
内发送电子邮件,您应该使用mailer
服务。由于您的控制器扩展Controller
,您可以直接从容器中获取它。所以,你的行动应该是这样的:
public function sendMail()
{
$mailer = $this->get('mailer'); //getting mailer from container
$message = \Swift_Message::newInstance('Web Lead')
->setSubject($subject)
->setTo($email)
->setBody($body);
$result=$mailer->send($message);
}
有一个特殊的howto in cookbook涵盖了这个主题。
注意:考虑在控制器类之外移动发送电子邮件逻辑(实际上是任何逻辑)。
注意2:我假设您知道方法中的exit
将终止方法执行。