создание почтовой службы в 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 должны поступать от контроллера. В моем config-файле app \ config \ config.yml я настроил это:

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

Я звоню в сервис от контроллера

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

Теперь я получил сообщение об ошибке «FatalErrorException: ошибка: класс« … Mailer »не найден в« … controller »

Мой код представляет собой микс из http://symfony.com/doc/current/book/service_container.html а также Как я могу отправлять электронные письма из класса обслуживания Symfony2?

Я был бы рад подсказке, если сервисный контейнер для настройки почты в классе, а не в контроллере, является правильным способом и где моя ошибка в мышлении. До сих пор я не понимал, как именно работает конфигурация сервисного контейнера.

Привет

1

Решение

Ваш сервис имеет внешнюю зависимость, в частности, почтовый сервис. Вы можете либо внедрить сам сервисный контейнер, либо внедрить почтовую службу. Если для вашей службы требуется только служба почтовой программы и ничего больше, я бы предложил внедрить только службу почтовой программы. Вот как вы можете настроить DIC для внедрения службы почтовой программы с помощью установщика:

services:
pw_mailer:
class:     Pso\LogBundle\PwMailer
arguments: [mailer]
0

Другие решения

Других решений пока нет …