Решено – спасибо, Джордж Камминс!
Я искал везде и не нашел решения. Я довольно новичок в PHP, но я просто не могу понять, почему это не работает.
Итак, это моя HTML-форма, которая находится внутри маленькой коробки на моем сайте.
<form name="contactform" action="contact/form-mailer.php" method="post"> <p>*Name: <input name="Name" id="Name" size="25"></p> <p>*Pickup from: <input name="pfrom" id="pform" size="25"></p> <p>*Destination: <input name="destin" id="destin" size="25"></p> <p>*E-mail: <input name="Email" id="Email" size="25"></p> <p>*Phone: <input name="Phone" id="Phone" size="25"></p> <p><input type="submit" value="Submit" name="submitform"><input type="reset" value="Reset" name="reset"></p> </form>
И это мой текущий PHP для отправки почты с помощью PEAR. Я еще не добавил все переменные в тело $, поскольку я только пытался заставить его фактически работать.
<?php // Include the Mail package //require "Mail.php"; include 'Mail.php'; // Identify the sender, recipient, mail subject, and body $sender = "XXXXXX"; $recipient = "XXXXXX"; $subject = "FORM"; $body = $name; // Even when seting $name in the PHP file it still doesn't show! // Identify the mail server, username, password, and port $server = "ssl://smtp.gmail.com"; $username = "XXXXXXXX"; $password = "XXXXXXXX"; $port = "465"; // Get form var's $name = "Test"; // I set $name to "Test" in the PHP and still the variable does not appear in the email. $destin = $_POST['destin']; $email = $_POST['Email']; $pfrom = $_POST['pfrom']; // Set up the mail headers $headers = array( "From" => $sender, "To" => $recipient, "Subject" => $subject ); // Configure the mailer mechanism $smtp = Mail::factory("smtp", array( "host" => $server, "username" => $username, "password" => $password, "auth" => true, "port" => 465 ) ); // Send the message $mail = $smtp->send($recipient, $headers, $body); if (PEAR::isError($mail)) { echo ($mail->getMessage()); } ?>
Поэтому я понятия не имею, почему это не работает. Мне нужно тело, чтобы быть таким
$body = $name . " wants to go to " . $destin . " from " . $pfrom;
Но он просто не подбирает какие-либо переменные, независимо от того, пытаюсь ли я их получить из формы HTML или установить в самом файле PHP. Я ожидал, что это будет очень легко, но это уже натолкнуло меня на день. Очень расстраивает. Я не могу найти ни одного примера, где показано, как это сделать, и только несколько человек задали этот точный вопрос и не получили окончательного ответа. Надеюсь, я дал достаточно подробностей!
Спасибо.
В опубликованном вами коде вы попытались установить значение $body
в строке 13, но не задали значение $name
до строки 22. $name
является нулевым в момент назначения ему $body
, поэтому $body
делает не содержат значений, на которые вы надеетесь.
Чтобы устранить эту проблему, переместите строку $body = ...
ниже других назначений. Что-то вроде этого:
... // Get form var's $name = "Test"; // I set $name to "Test" in the PHP and still the variable does not appear in the email. $destin = $_POST['destin']; $email = $_POST['Email']; $pfrom = $_POST['pfrom']; // Populate $body $body = $name . " wants to go to " . $destin . " from " . $pfrom; ...
Вы не упомянули, где вы сохранили свой файл php-кода? Это папка контакта? а также следить за расположением файла Mail.php. Этот файл должен находиться в папке контакта.