2016-11-19 7 views
0

Slim v3のPHPフレームワークを使用しており、PHPMailerを統合してメールを送信しています。私はTwigのようなテンプレートエンジンは使用しませんが、むしろ普通のPHPを使います。スリムフレームワークとPHPmailerの電子メールテンプレートレンダリング

私のアイデアは、電子メール用のHTML5テンプレートを通常のページテンプレートと同様の別のファイルに作成し、いくつかの変数を渡してレンダリングして送信することです。 1つの部分を除いてすべてうまくいきます - レンダリングされた出力はヘッダー情報をレンダリングしました。

これは、私のコードがどのように見えるかですもちろん

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

の単純化された。そして、私はphpmailerの

でこれを送信
$mail->msgHTML($template); 

問題は、HTMLコンテンツの上に、私は、このヘッダデータを取得するということです送信済みメールに表示されます:

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

これを使わないで出力する方法はありますか?現時点では、これを削除するためにstr_replace()を使用していますが、これに対処するための洗練された組み込みのソリューションがあると思いますか?

答えて

6

#render()メソッドは、応答に関するすべての情報とヘッダー情報を含むPsr\Http\Message\ResponseInterfaceを返します。

htmlのみを返すビューでは、#fetch()メソッドを使用します。

$template = $this->view->fetch("email/simple_email.phtml", $email_content); 
関連する問題