2014-06-07 11 views
5

Quali sono le migliori pratiche per inviare e-mail da html & css? Io ho un gran poste nei miei progetti & cercate la soluzione, che può permettermi di non scrivere tutto il codice qui sotto ancora & ancora:Best practice per e-mail in stile Symfony2

$msg = \Swift_Message::newInstance() 
    ->setSubject('Test') 
    ->setFrom('[email protected]') 
    ->setTo('[email protected]') 
    ->setBody($this->renderView('MyBundle:Default:email1.text.twig')); 

$this->get('mailer')->send($msg); 

risposta

7

Forse la mia risposta può aiutare. È disponibile un pacchetto speciale Symfony2-MailerBundle che esegue il rendering del corpo dell'email dal modello e consente di impostare i parametri di invio nel file di configurazione & non è necessario passarli ogni volta che si desidera creare l'e-mail di invio &.

+0

Grazie, questo pacchetto fa davvero il trucco. –

4

Impostare tale codice come funzione in un servizio. Le funzioni sono per questo.

Per creare un servizio, vedere il collegamento seguente.

How to inject $_SERVER variable into a Service

Nota: non dimenticate di iniettare il servizio di posta elettronica come un argomento!

arguments: ["@mailer"] 

Dopo aver impostato il servizio;

public function sendMail($data) 
{ 
    $msg = \Swift_Message::newInstance() 
     ->setSubject($data['subject']) 
     ->setFrom($data['from']) 
     ->setTo($data['to']) 
     ->setBody($this->renderView($data['view'])); 

    $this->mailer->send($msg); 
} 

E potete chiamare il vostro servizio come;

// this code below is just for setting the data 
$data = [ 
    'subject' => 'Hello World!', 
    'from' => '[email protected]', 
    'to' => '[email protected]', 
    'template' => 'blabla.html.twig' 
]; 

// this code below is the actual code that will save you 
$mailer = $this->get('my_mailer_service'); 
$mailer->sendMail($data);