发送电子邮件时,联系表单会抛出错误。

时间:2014-04-18 09:02:02

标签: php

我正在开发一个联系表单,用于向用户数据发送电子邮件,但它无效。

代码:

<?php
if ($_POST["email"]<>'') {
    $ToEmail = 'youremail@site.com';
    $EmailSubject = 'Site contact form';
    $mailheader = "From: ".$_POST["email"]."\r\n";
    $mailheader = "Reply-To: ".$_POST["email"]."\r\n";
    $mailheader = "Content-type: text/html; charset=iso-8859-1\r\n";
    $MESSAGE_BODY = "Name: ".$_POST["name"]."";
    $MESSAGE_BODY = "Email: ".$_POST["email"]."";
    $MESSAGE_BODY = "Comment: ".nl2br($_POST["comment"])."";
    mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure");
?>
Your message was sent
<?php
} else {
?>
<form action="mail.php" method="post">
<table width="400" border="0" cellspacing="2" cellpadding="0">
<tr>
<td width="29%" class="bodytext">Your name:</td>
<td width="71%"><input name="name" type="text" id="name" size="32"></td>
</tr>
<tr>
<td class="bodytext">Email address:</td>
<td><input name="email" type="text" id="email" size="32"></td>
</tr>
<tr>
<td class="bodytext">Comment:</td>
<td><textarea name="Comment" cols="45" rows="6" id="Comment" class="bodytext"></textarea></td>
</tr>
<tr>
<td class="bodytext"> </td>
<td align="left" valign="top"><input type="submit" name="Submit" value="Send"></td>
</tr>
</table>
</form>
<?php
};
?>

它会抛出如下错误:

  • 未定义的索引:第10行的commen。

  • 第11行缺少标题。

5 个答案:

答案 0 :(得分:3)

以下是您的代码中的一些错误..

1.在第2行更改代码(我不知道为什么你没有提到这个错误)

if ($_POST["email"]<>'') {

if (isset($_POST["email"]) && $_POST["email"]<>'') {

2.将textarea的名称从“Comment”改为“comment”

最后按照本文前面的答案说明解决“标题丢失”问题。

之类的东西
$mailheader = "From: ".$_POST["email"]."\r\n";
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";

答案 1 :(得分:1)

当每个人都说出你的第一个错误时,我不会重复它,但另一个错误是:

您应该加入邮件标题和邮件正文:

您之前的代码:

$mailheader = "From: ".$_POST["email"]."\r\n";
$mailheader = "Reply-To: ".$_POST["email"]."\r\n";
$mailheader = "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE_BODY = "Name: ".$_POST["name"]."";
$MESSAGE_BODY = "Email: ".$_POST["email"]."";
$MESSAGE_BODY = "Comment: ".nl2br($_POST["comment"])."";

新守则:

$mailheader = "From: ".$_POST["email"]."\r\n";
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE_BODY = "Name: ".$_POST["name"]."";
$MESSAGE_BODY .= "Email: ".$_POST["email"]."";
$MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"])."";

看看等号前面给出的点。

答案 2 :(得分:0)

看到你需要连接mailHeader var同样适用于正文消息

$mailheader = "From: ".$_POST["email"]."\r\n";
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";

答案 3 :(得分:0)

你犯了两个错误。

  1. 您已提供 name="Comment" 表单,请将 name="comment"或$ _POST [“comment”]提供给$ _POST [“评论”]

  2. mail header之后添加。赞

    $ mailheader =“From:”。$ _ POST [“email”]。“\ r \ n”;

    $ mailheader =“回复:”。$ _ POST [“email”]。“\ r \ n”;

    $ mailheader =“内容类型:text / html; charset = iso-8859-1 \ r \ n”;

    $ MESSAGE_BODY =“姓名:”。$ _ POST [“name”]。“”;

    $ MESSAGE_BODY =“电子邮件:”。$ _ POST [“email”]。“”;

    $ MESSAGE_BODY =“评论:”。nl2br($ _ POST [“comment”])。“”;

答案 4 :(得分:0)

您收到此错误的第10行是因为您使用的是 $ _ POST [&#34;评论&#34;]&#34; ,但在您写的 id =& #34;注释&#34; 即可。要删除错误,请注意两个地方的upar和小写..

谢谢。