$ subject в почтовой форме php возвращает только первое слово в строке
В настоящее время я изучаю php для класса веб-интерфейса, и одно из наших заданий - создать базовую форму для отправки электронного письма. Затем мы должны иметь возможность отправить образец этой формы по электронной почте через HTML. Я хочу сделать это, показывая ввод, который был введен при отправке электронного письма. У меня большая часть работает, я просто не могу заставить переменную $ subject полностью заполнить образец. Он покажет только одно слово и пропустит все остальные после первого пробела. (То же самое относится и к переменной $ from, однако, как правило, это будет адрес электронной почты и, следовательно, это не главная проблема)
Например, если я отправлю электронное письмо с темой «Это тест», при получении сообщения электронной почты в папке «Входящие» я увижу полный текст темы «Это тест» в строке темы моего письма. Но когда я открою само письмо и посмотрю на сгенерированный образец формы, я увижу только «Это» как заполненную тему.
Я использую тег input = type = "text" для ввода темы, и я думаю, что это одна из причин. Я могу решить эту проблему с помощью тега textarea, но это не совсем обычное явление, и кажется, что оно побеждает цель упражнения. Любая помощь приветствуется. Спасибо!
Вот мой код: (Первый блок - это просто функция для генерации формы.)
function createForm() //create form upon page load
{
echo '<form method="post">' . '<br />';
echo '<fieldset>' . '<br />';
echo '<legend><p>Heading</p></legend>' . '<br />';
echo 'To: <input name="to" type="text" />' . '<br />';
echo 'From: <input name="from" type="text" />' . '<br />';
echo 'Subject: <input name="subject" type="text" />' . '<br />';
echo '</fieldset>' . '<br />';
echo '<fieldset>' . '<br />';
echo '<legend><p>Content</p></legend>' . '<br />';
echo 'Message: <textarea name="message" cols="30" rows="10"></textarea>' . '<br />';
echo '<input name="send" type="submit" />' . '<br />';
echo '</fieldset>' . '<br />';
echo '</form>';
}
И фактический отправьте код электронной почты:
if(isset($_REQUEST['to'])) //send email
{
$to = $_REQUEST['to'];
$subject = $_REQUEST['subject'];
$from = $_REQUEST['from'];
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= 'Content-Type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: $from" . "\r\n";
$headers .= "Reply-To: $from" . "\r\n";
$headers .= "Subject: $subject" . "\r\n";
$headers .= "X-Mailer: PHP/".phpversion() . "\r\n";
//html message
$message = '
<html>
<body>
<form>
<fieldset>
<legend>Headings</legend>
To: <input type="text" name="to" value=' . $_REQUEST['to'] . ' /><br />
From: <input type="text" name="from" value=' . $_REQUEST['from'] . ' /><br />
Subject: <input type="text" name="subject" value=' . $_REQUEST['subject'] . ' />
</fieldset>
<fieldset>
<legend>Content</legend>
Message: <textarea name="message" cols="30" rows="10">' . $_REQUEST['message'] . '</textarea><br />
<input type="submit" name="send" />
</fieldset>
</form>
</body>
</html>';
mail($to,$subject,$message,$from,$headers);
echo "Message sent, thank you. <br />";
echo '<a href="email.php">Return</a>';
}
else
{
createForm(); //create form if no $to set.
}