我可以成功使用followig代码从控制器发送电子邮件:
$message = \Swift_Message::newInstance() ->setSubject('Hello Email') ->setFrom('send@example.com') ->setTo('recipient@example.com') ->setBody($this->renderView('HelloBundle:Hello:email.txt.twig',array('name' => $name))) ; $this->get('mailer')->send($message);
您的服务具有外部依赖性,特别是邮件服务.您可以自己注入服务容器,也可以注入邮件服务.
原文链接:https://www.f2er.com/php/131170.html如果你的服务只需要邮件服务,没有别的,我建议只注册邮件服务.
以下是如何配置DIC以使用setter注入邮件服务:
<service id="my.service" class="Acme\DemoBundle\Service\Hello"> <call method="setMailer"> <argument type="service" id="mailer" /> </call> </service>
在你的课堂上,写你的设定者:
class Hello { protected $mailer; public function setMailer($mailer) { $this->mailer = $mailer; } public function sendEmail() { $message = \Swift_Message::newInstance() ->setSubject('Hello Email') ->setFrom('send@example.com') ->setTo('recipient@example.com') ->setBody($this->renderView('HelloBundle:Hello:email.txt.twig',array('name' => $name))) ; $this->mailer->send($message); } }