2

私は php からメールを送信しようとしています。すべての値と他の php テンプレート ファイルを含む 1 つの php ファイルがあります。

(両方のファイルは同じサーバーにあります)

たとえば、phpテンプレートファイルの内容を取得するためにfile_get_contentsを使用しています

   $url="emil_form.php";
   $a="uname";
  if(($Content = file_get_contents($url. "?uname=".$a)) === false) {
   $Content = "";
    }

   ...... EMAIL Sending Code ..........

emil_form.php (電子メール テンプレート ファイル) のコードは次のとおりです。

    Your Name is : <?php $_GET['uname']; ?>

$Content でデータを取得したら、メールで送信できます。しかし、ファイルを開けないというエラーが発生しています....

私が欲しいのは、元のphpファイルからテンプレートphpファイルにデータを渡し、変数に格納されたテンプレートの出力になるものをメールで送信できるようにすることです。

どうすればこれを行うことができますか?

ありがとう

4

4 に答える 4

10

本当の問題は、背後に http クエリ文字列があるローカル ファイルを読み込もうとすることです。ファイル システムはこれを理解せず、「emil_form.php?uname=uname」というファイルを探します。$_GET / $_POST / などは、http 接続でのみ機能します。

テンプレートに「%%NAME%%」のようなプレースホルダーを配置し、テンプレートを読んだ後にこれを置き換えてみてください。

<?php
$url = "emil_form.php";
$a   = "uname";
if(($Content = file_get_contents($url)) === false) {
   $Content = "";
}
$Content = str_replace('%%NAME%%', $a, $Content); 
// sending mail....

テンプレートは次のようになります。

Your Name is: %%NAME%%
于 2010-01-01T14:46:27.753 に答える
1

別の解決策は次のとおりです...「cballou」で提案されているように、相対パスまたは絶対パスを使用してファイルを読み取ります。

しかし、PHPファイルを作成する代わりに、単純なテキストファイルを使用して、メッセージテンプレートをその中に置き、(置換キー)<?php $_GET['uname']; ?>のような一意のものに置き換えます。%uname%ファイルの内容を変数に読み取り、置換キーを次のように変数に置き換えます。

   $url = "/usr/local/path/to/email_form.txt";
       $a = "uname";
       if(($Content = file_get_contents($url)) === false) {
           $Content = "";
       }else{
           $content = str_replace('%uname%', $a, $content);
       }
于 2010-01-01T14:57:00.807 に答える
0

emil_form.php を読み込もうとしている $url にファイル名エラーがあることに注意してください。

二次的な問題は、$url への呼び出しに使用しているパスのようです。ファイルを適切に解析するために、完全な URLにしてみてください。それ以外の場合に必要となるテンプレート作成を避けることができます。RTT は遅くなりますが、コードを変更する必要はありません。これは次のようになります。

   $url = 'http://www.mysite.com/email_form.php';
   $a = "uname";
   if(($Content = file_get_contents($url. "?uname=".$a)) === false) {
       $Content = "";
   }
于 2010-01-01T14:34:49.137 に答える