Я пытаюсь отправить электронную почту с 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-файл и что будет выводить шаблон, хранящийся в переменной, чтобы я мог отправить его по электронной почте.
как это можно сделать?
благодаря
Реальная проблема заключается в том, что вы пытаетесь прочитать локальный файл с строкой запроса 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%%
Вот альтернативное решение … Используйте относительный путь или абсолютный путь, как предложено «cballou» для чтения файла.
Но insted wirting php-файл использует простой текстовый файл, вставьте в него шаблон сообщения, замените <?php $_GET['uname']; ?>
<?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); }
Обратите внимание, что у вас была ошибка имени файла в $ 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 = ""; }