在 Symfony 2 中创建邮件服务


creating a mailer service in symfony 2

我对Symfony很陌生,现在我有一个关于配置和发送邮件的问题。实际上,我正在控制器中配置和发送邮件,但对我来说,最好不要在控制器中配置邮件,而是在.ini文件中或其他文件中配置邮件。因此,我认为正确的方法是将其配置为服务,因为这样我就可以在类中而不是在代码中配置邮件本身。

我创建了一个类,看起来像这样:

class PwMailer{
protected $mailer;
public function setMailer($mailer)
{
    $this->mailer = $mailer;
}
public function sendEmail($email, $password)
{
    $message = 'Swift_Message::newInstance()
        ->setSubject('New Password')
        ->setFrom('xxx@nobody.com')
        ->setTo($email)
        ->setBody('Your new Password is '.$password)
    ;
    $this->mailer->send($message);
}

}

值$email和$password应来自控制器。在我的配置文件app''config''config.yml中,我配置了它:

services:
  pw_mailer:
    class:     Pso'LogBundle'PwMailer
    arguments: [sendmail] 

我从控制器调用服务

$mailer = new Mailer('pw_mailer');
$mailer->send();

现在我收到错误"致命错误异常:错误:类'...邮件"在"...控制器'

我的代码是来自 http://symfony.com/doc/current/book/service_container.html 的混合,我如何从Symfony2服务类发送电子邮件?

如果用于在类而不是控制器中配置邮件的服务容器是正确的方法,并且我的思维错误在哪里,我会很高兴得到一个提示。到目前为止,我还没有弄清楚服务容器的配置是如何工作的。

问候

您的服务具有外部依赖项,尤其是邮件程序服务。您可以注入服务容器本身,也可以注入邮件程序服务。如果您的服务只需要邮件服务而不需要其他服务,我建议只注入邮件服务。下面介绍如何配置 DIC 以使用资源库注入邮件程序服务:

services:
    pw_mailer:
        class:     Pso'LogBundle'PwMailer
        arguments: [mailer]