2

我正在尝试从 php 发送电子邮件我有一个包含所有值和其他 php 模板文件的 php 文件。

(两个文件都在同一台服务器上)

例如,我正在使用 file_get_contents 获取 php 模板文件的内容

   $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 / etc 仅适用于 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 回答
1
$url = sprintf("%s://%s",  isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['SERVER_NAME']);
$content = file_get_contents($url."/file.php?test=".$test);
echo $content;
于 2018-10-04T04:24:58.300 回答
0

请注意,您在 $url 中有一个文件名错误,wss 试图加载 emil_form.php。

第二个问题似乎是您用于调用 $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 回答