メール送信の内容にテンプレートを使うには - PHPプロ!Q&A掲示板

2076

  • 0P

メール送信の内容にテンプレートを使うには

質問日時 / 2009年6月5日 02:56    回答数 / 2件

Questioner:  eddie  このエントリーをはてなブックマークに追加 

キーワード / メール    送信    テンプレート   

メール送信の本文部分を外部にテンプレート化したいのですが方法がわかりません。

たとえば以下のようなテンプレートがあったとします。
mail_template.thtml

  1. 名前  : <?php echo $post['name']?>
  2. メールアドレス:<?php echo $post['mail_addr']?>

そしてsend.php(簡略化してあります)でテンプレートであるmail_template.thtmlを読み込み本文を構築してメールを送信したいのです。

send.php
  1. <?php
  2.  
  3. $post['name'] = "hogehoge";
  4. $post['mail_addr'] = "foo@foo.com";
  5.  
  6. //省略
  7.  
  8. mb_send_mail($to,$subject,ここに上記の値を入れたテンプレートの内容を入れたい,$header);

しかし、どのようにテンプレートファイルを読み込み値を入れてメールを送信する方法がわかりません。
includeでmail_template.thtmlを読み込むと変数部分にちゃんと値も入るのですがその場で表示されてしまい
どうやってmb_send_mailに渡すのかがわかりません。

メールで送る内容のフォーマットを別ファイルにテンプレートとしてい用意し、値を入れて送信したい場合どのようにすればよいのでしょうか?

PHPの知識が浅い上、文章を書くのもヘタなのでわかりずらいかもしれませんがよろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01mgngmgng例えば、バッファコントロールして テンプレートを評
┗A02okamoto535はじめまして。okamoto535と申します。 Smartyとい

回答一覧

並び替え:

A01 満足
answerermgngmgng [6月5日 09:47]

例えば、バッファコントロールして
テンプレートを評価→出力ゲットするなど。

  1. <?php
  2. $post['name'] = "hogehoge";
  3. $post['mail_addr'] = "foo@foo.com";
  4.  
  5. ob_start();
  6. require_once 'mail_template.thtml';
  7. $tpl_data = ob_get_contents();
  8. ob_end_clean();
  9.  
  10. mb_send_mail($to$subject$tpl_data$header);

この意見に回答する

ツリーへ TOPへ

A02 参考になった
answererokamoto535 [6月6日 00:52]

はじめまして。okamoto535と申します。

Smartyというテンプレートエンジンがあるので、利用してみてはいかがでしょうか?
私自身、HTML出力やメール本文作成等でSmartyを使う事が多いので、紹介します。

(step1)Smartyマニュアルにて概要を理解
http://www.phppro.jp/phpmanual/smarty/index.html

(step2)Smartyをダウンロードして設置

(step3)テンプレートファイルを作成
【テンプレート サンプル】mail_template.thtml
  1. ------------------------
  2. 名前  : {$name}
  3. メールアドレス:{$mail_addr}
  4. ------------------------

(step3)PHPコードを作成
【プログラム サンプル】
  1. <?php
  2. // Smarty の格納先のパスを定義
  3. define(SMARTY_DIR'./smarty/');
  4.  
  5. // Smarty のインスタンスを生成
  6. require_once(SMARTY_DIR . 'Smarty.class.php');
  7. $smarty = new Smarty();
  8. $smarty->cache_dir = SMARTY_DIR . 'cache/';
  9. $smarty->caching = 0;
  10. $smarty->force_compile = true;
  11. $smarty->compile_dir = SMARTY_DIR . 'templates_c/';
  12. $smarty->config_dir = SMARTY_DIR . 'config/';
  13.  
  14. // Smarty に変数を設定
  15. $smarty->assign('name'"hogehoge");
  16. $smarty->assign('mail_addr'"foo@foo.com");
  17.  
  18. // テンプレート(xxx.tpl)からメール本文を取得
  19. $body = $smarty->fetch('mail_template.thtml');
  20.  
  21. // メール送信
  22. mb_send_mail($to,$subject,$body,$header);
  23. ?>

参考になれば、幸いです。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
array_mergeの再帰処理の動作について
 このエントリーをはてなブックマークに追加 
A
>1個になったとき$leftを返しますが、 >このとき、最終的な$leftはnullになるかと思います。 いいえ、最後は「渡された配列をそのまま」返します。要素が2以上あるときとの違いは(並べ替えずに戻るので...

>>続きを読む

再帰関数は最初の内は混乱しますが、非常に上手く使える場面もいずれ出てきます。これを機会に学んでいけるといいですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)