除了1(一)个变量之外的所有内容似乎都在我的邮件表单上工作。在我的HTML页面上,我有一个带有选择框的表单,一些文本输入和一个用于消息的文本区域。正在检索除消息变量之外的所有内容。
对于这些基于PHP的邮件表单,我从未如此出色。我通常使用HTML mailto表单,但它们不安全且非常简单。
我很感激你的帮助。谢谢!
HTML
<form method="post" action="php/contact.php">
<label for="senderName">name:</label> <input name="senderName" type="text" /><br />
<label for="senderEmail">email:</label> <input name="senderEmail" type="text" /><br />
<label for="senderRegarding">subject:</label>
<select name="senderRegarding">
<option value="start a project">Wish to start a project</option>
<option value="request resume password">Request resumé password</option>
<option value="other">Other</option>
</select><br />
<label for="senderMessage">message:</label> <textarea name="senderMessage"></textarea><br />
<input type="submit" name="submit" /> <input type="reset" />
</form>
PHP
<?php
if (isset($_POST['submit'])){
$name = $_POST['senderName'];
$email = $_POST['senderEmail'];
$regarding = $_POST['senderRegarding'];
$message = $_POST['message'];
$subject = "Contact Form";
$message =
"Name: " . $name . "\r\n" .
"Email: " . $email . "\r\n" .
"Subject: ". $regarding . "\r\n" .
"Message: " . $senderMessage;
$headers =
"From: " . $name . "\r\n" .
"Reply-To: " . $email . "\r\n" .
"MIME-Version: 1.0\n" .
"Content-type: text/plain; charset=iso-8859-1\n";
$to = "email@address";
};
mail($to, $subject, $message, $headers);
header("Location:../index.htm");
?>
答案 0 :(得分:4)
如果你查看你的代码,textarea被称为“senderMessage”而你的$ _POST正在寻找“消息”。
将$ _POST ['message']更改为$ _POST ['senderMessage']并且可以正常工作
<强>现有强>
$message = $_POST['message'];
更改为
$message = $_POST['senderMessage'];
答案 1 :(得分:3)
我强烈建议不要使用PHP的内置mail()
函数;真的太可怕了。你最终得到了可怕的代码;你必须手动构建所有标题;它对臭虫很开放。
而是下载phpMailer。
的副本这是一个让PHP发送电子邮件变得轻而易举的课程。
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = $from;
$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->Body = $body;
$mail->Send();
更简单,我相信你会同意的。而且更安全,更易于使用,更实用。
答案 2 :(得分:2)
我相信更换
$message = $_POST['message'];
的
$message = $_POST['senderMessage'];
可能会解决您的问题。或者,您可以将<textarea name="senderMessage></textarea>
更改为<textarea name="message"></textarea>
答案 3 :(得分:2)
应为$message = $_POST['senderMessage'];