2016-11-19 5 views
0

Ich verwende Schlanke v3-PHP-Framework und integriert haben PHPMailer Mails zu versenden. Ich benutze keine Template-Engine wie Zweig, aber ich eher schlicht PHP verwenden.Schlanke Rahmen und E-Mail-Vorlage Rendering-Ausgabe mit PHPmailer

Meine Idee ist es, eine HTML5-Vorlage für E-Mails in einer separaten Datei, ähnlich wie reguläre Seitenvorlagen zu machen und dann einige Variablen in es passiert, macht es und senden Sie es. Es funktioniert alles gut, außer für einen Teil - gerenderte Ausgabe hat auch Kopf info gemacht. Diese

ist, wie mein Code aussieht, vereinfacht natürlich

// Store variables in an array 
$email_content = array(
    'email__name' => $_POST['name'], 
    'email__from' => $_POST['from'], 
    'email__message' => $_POST['message'] 
); 

// Render email template 
$template = $this->view->render($response, "email/simple_email.phtml", $email_content); 

Und dann sende ich dies mit PHPMailer

$mail->msgHTML($template); 

Problem ist, dass auf der HTML-Inhalt ich diese Kopfdaten erhalten, was ist in gesendeten E-Mail sichtbar:

HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 

Gibt es eine Möglichkeit, die Ausgabe ohne dies zu rendern? Im Moment bin ich mit str_replace() diese zu entfernen, aber ich denke, dass es eine elegante, Baujahr, Lösung damit umgehen?

Antwort

6

Die #render()-Methode gibt eine Psr\Http\Message\ResponseInterface zurück, die alle Informationen zur Antwort enthält, also auch die Header-Informationen.

Sie wollen nur die HTML, also verwenden Sie die #fetch() Methode für die Ansicht, die nur die HTML zurückgibt.

$template = $this->view->fetch("email/simple_email.phtml", $email_content);