-1

除了 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&eacute; 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");
?>
4

4 回答 4

4

如果您查看代码,则 textarea 称为“senderMessage”,而您的 $_POST 正在寻找“消息”。

将 $_POST['message'] 更改为 $_POST['senderMessage'] 即可

现存的

$message = $_POST['message'];

改成

$message = $_POST['senderMessage'];
于 2012-10-29T21:18:49.803 回答
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();

简单得多,我相信你会同意的。而且更安全、更易于使用且功能更强大。

于 2012-10-29T21:21:51.987 回答
2

我相信更换

 $message = $_POST['message'];

为了

 $message = $_POST['senderMessage'];

可能会解决您的问题。或者,您可以更改<textarea name="senderMessage></textarea><textarea name="message"></textarea>

于 2012-10-29T21:18:59.837 回答
2

它应该是$message = $_POST['senderMessage'];

于 2012-10-29T21:19:47.820 回答