2014-06-07 12 views
5

Was sind die besten Praktiken zum Senden von E-Mails von HTML & CSS? Ich habe viele Mails in meinen Projekten & die Lösung benötigen, damit das kann mich nicht all unten Code & wieder, wieder schreiben:Symfony2 styled E-Mail Best Practices

$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); 

Antwort

7

Vielleicht kann meine Antwort helfen. Es gibt ein spezielles Paket Symfony2-MailerBundle, das den E-Mail-Text aus der Vorlage rendert und es ermöglicht, Parameter in der Konfigurationsdatei & zu senden. Sie müssen sie nicht jedes Mal weitergeben, wenn Sie & E-Mail senden möchten.

+0

Danke, dieses Bündel macht wirklich den Trick. –

4

Diesen Code als Funktion in einem Service festlegen. Funktionen sind dafür.

Um einen Dienst zu erstellen, klicken Sie auf den folgenden Link.

How to inject $_SERVER variable into a Service

Hinweis: vergessen Sie nicht, den E-Mail-Dienst als Argument zu spritzen!

arguments: ["@mailer"] 

Nachdem Sie Ihren Service eingestellt haben;

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); 
} 

Und Sie können Ihren Dienst wie anrufen;

// 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);