我目前正在为 Web 界面类学习 php,我们的任务之一是生成一个基本表单来发送电子邮件。然后,我们必须能够通过 html 在电子邮件中发送该表单的样本。我想这样做显示发送电子邮件时输入的输入。我已经完成了大部分工作,只是无法让 $subject 变量完全填充到样本中。它只会显示一个单词,并在第一个空格字符之后跳过所有其他单词。( $from 变量也是如此,但是这通常是一个电子邮件地址,因此不是主要问题)
例如,如果我发送一封主题为“This is a test”的电子邮件,当我在收件箱中收到这封电子邮件时,我会在电子邮件的主题行中看到完整的主题“This is a test”。但是当我打开电子邮件本身并查看生成的表单示例时,我只会看到“This”作为填写的主题。
我正在使用 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.
}