電子書籍の厳選無料作品が豊富!

メール送信の本文をSmartyテンプレートにしようと考えています。。

しかし、メールの本文がSmartyのテンプレートの内容ではなく、真っ白になってしまい
困っています。


$body = $smarty->fetch('mail.tpl'); //メールのテンプレートをSmartyで読み込む
mb_language('japanese');
mb_internal_encoding('utf-8');
mb_send_mail($to,$subject,$body,$header); //メールの送信

■メールはきちんと受信できます。
■Smartyのテンプレートを読み込めていないのかと思い、
$bodyをprint($body)で確認しましたが、テンプレートの内容がきちんと表示されました。
■$body = "テスト"; と入力し、メールを送信した場合、
メールの本文は空白になりませんでした。


次に何を確認すればよいのか、わからなくなってきたので、
アドバイスをいただけないでしょうか。

宜しくお願いいたします。

A 回答 (1件)

切り分け的には書いてある文からでは問題なさそうにしか思えません。


もしかすると、受信したメールのソースを表示してみるといいかも知れません。
thunderbirdにはその機能がありますが、ご使用のメーラにその機能があるかどうかは不明です。
あちこちのフリーメールに送ってみて、やはりすべて空白なのかどうかとか調べてみるという手はあるかも。

メール送信を関数化していて、$bodyはローカル変数でSmartyから読みこんだ値はグローバル変数に保存しているなんて事はないですよね?
print($body)で読みこめたかどうか確認したのは、mb_send_mailの位置(直前でも直後でも、mb_send_mailをコメントアウトして置き換えたでも可)ですよね?
なんとなくポカミスレベルの事じゃないかと感じてますが、具体的にどんなポカミスなのかってのは、想像できませんね。

この回答への補足

アドバイス頂きありがとうございます。
教えていただいた内容を実行し、前に進めました。そして、新たなことがわかりました。

プログラムを./start.phpのような形で、
コマンドから起動した場合、メール送信の本文はSmartyのテンプレートになるのですが、

プログラムから自動で起動した場合、メール送信の本文がSmartyのテンプレートにならない
ということがわかりました。

具体的には、専用のアドレスにメールが届くと、start.phpが働き、メールが送信される
仕組みです。

使っているレンタルサーバはサクラで、
.mailfilter にstart.phpのパスを書いて、start.phpを動かしています。

確認すべき事項等おわかりでしたら、再度、アドバイスいただけないでしょうか。
内容を変えて再度掲示板に投稿しようと考えているので、余裕のある場合のみアドバイスいただければ、幸いです。

補足日時:2011/02/22 12:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!