我正在尝试从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文件以及存储在变量中的模板输出,以便我可以通过电子邮件发送。
怎么办呢?
由于
答案 0 :(得分:9)
真正的问题是你尝试读取一个带有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%%
答案 1 :(得分: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);
}
答案 2 :(得分:0)
请注意,$ url中有一个文件名错误,试图加载emil_form.php。
次要问题似乎是您用于调用$ url的路径。尝试将其设为完整网址,以便正确解析文件,避免您可能需要进行的任何模板操作。 RTT会慢一些,但你不必更改任何代码。这看起来像是:
$url = 'http://www.mysite.com/email_form.php';
$a = "uname";
if(($Content = file_get_contents($url. "?uname=".$a)) === false) {
$Content = "";
}
答案 3 :(得分:0)
$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;