EDIT: poiché non ho testato il codice, è necessario specificare il livello di trasporto se non si utilizza il contenitore di servizi per ottenere l'istanza del mailer. Guarda: http://swiftmailer.org/docs/sending.html
Stai sbagliando. Fondamentalmente vuoi un servizio , non una classe che si estende Controller
. Non funziona perché il contenitore di servizi non è disponibile nella funzione SendMail()
.
È necessario inserire il contenitore di servizi nel proprio helper personalizzato per l'invio di e-mail. Alcuni esempi:
namespace Blogger\Util;
class MailHelper
{
protected $mailer;
public function __construct(\Swift_Mailer $mailer)
{
$this->mailer = $mailer;
}
public function sendEmail($from, $to, $body, $subject = '')
{
$message = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom($from)
->setTo($to)
->setBody($body);
$this->mailer->send($message);
}
}
di usarlo in un'azione regolatore:
services:
mail_helper:
class: namespace Blogger\Util\MailHelper
arguments: ['@mailer']
public function sendAction(/* params here */)
{
$this->get('mail_helper')->sendEmail($from, $to, $body);
}
o altrove senza accedere al contenitore di servizi:
class WhateverClass
{
public function whateverFunction()
{
$helper = new MailerHelper(new \Swift_Mailer);
$helper->sendEmail($from, $to, $body);
}
}
O in un servizio personalizzato accesso al contenitore:
namespace Acme\HelloBundle\Service;
class MyService
{
protected $container;
public function setContainer($container) { $this->container = $container; }
public function aFunction()
{
$helper = $this->container->get('mail_helper');
// Send email
}
}
services:
my_service:
class: namespace Acme\HelloBundle\Service\MyService
calls:
- [setContainer, ['@service_container']]
Non capisco. Questo frammento di codice è inteso come la tua attuale soluzione, ma ti piacerebbe spostare la posta in qualche altro posto? Se è corretto, probabilmente dovresti leggere i servizi di iniezione nei tuoi corsi personalizzati: http://stackoverflow.com/questions/6124444/how-can-i-access-a-service-outside-of-a-controller-with- symfony2 – geca
Ho usato FOSUserBundle e FOSFacebookbundle quello che voglio quando l'utente accede con successo con l'account facebook Voglio mandare e-mail all'utente con la sua password in modo che possa accedere con quella password e-mail per questo devo scrivere nella classe provider per inviare e-mail .... –