$名称不通过HTML邮件表单发送

时间:2013-11-25 08:48:42

标签: php html email

我在网上发现了一个好的html邮件webform,感谢CSS-tricks的人们,一切似乎都运行良好。该表单使用PHP作为Apache上安装的模块。在表格中,我要求提供用户名,电子邮件地址和评论。除了用户名之外的所有内容都会到达我的邮箱。我似乎无法找到为什么这不起作用的原因。这是我的HTML代码:

    <div id="form_container">
        <form method="post" name="contact_form" action="contactengine.php">
            <table>
            <tr>
            <td class="description-column">
                <label class="description" for="Name">Name </label>
            </td>
            <td>
            <span><input id="Name" type="text" maxlength="455" value=""/ size="41></span>
            </td>
            </tr>

            <tr>
            <td class="description-column">
                <label class="description" for="Email">Email </label>
            </td>
            <td>
            <span><input id="Email" name="Email" type="text" maxlength="455" value=""/ size="41">
            </span>
            </td>
            </tr>

            <tr>
              <td class="description-column">
               <label class="description last" for="Message">Message </label>
             </td>
             <td>
             <span>
              <textarea id="Message" class="comment-box" name="Message" maxlength="455">                                    
              </textarea>
             </span>
            </td>
           </tr>

          <tr colspan="2">
           <td></td>
           <td class="buttons">
            <input type="hidden" name="form_id" value="" />
            <input type="submit" name="submit" value="Submit" class="submit-button" />
           </td>
          </tr>
       </table>
      </form>
    </div>

这是PHP代码:

<?php

$EmailFrom = "user@mail.com;"
$EmailTo = "info@mymailbox.com";
$Subject = "Mail";
$Name = Trim(stripslashes($_POST['Name'])); 
$Email = Trim(stripslashes($_POST['Email'])); 
$Message = Trim(stripslashes($_POST['Message'])); 

// validation
$validationOK=true;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  exit;
}

// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page 
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>

我假设//发送邮件下的PHP代码会插入用户输入邮件的所有内容并将其发送到我的邮箱。这意味着它需要在$ Body下输入所有数据,其中包括$ Name。但它永远不会给我发这个名字。 我也想知道为什么在第一个字段“$ EmailFrom”我应该输入一个固定的电子邮件地址(在这种情况下是'user@mail.com'),而用户在html表单中输入他的地址并在邮件中发送接收。 $ EmailFrom字段仅供我查看谁发送邮件而无需打开邮件。它也应该是用户的邮件地址或用户名。

我希望自己足够清楚?

在此先感谢,我已经在本网站上找到了许多关于其他主题的有价值的答案:)

4 个答案:

答案 0 :(得分:1)

只有具有name属性的表单控件才能成功。你没有。

<input id="Name" type="text" maxlength="455" value=""/ size="41>

应该是

<input id="Name" name="Name" type="text" maxlength="455" value="" size="41">

答案 1 :(得分:1)

您忘记将name属性放入输入标记

<td>
<span><input id="Name" type="text" maxlength="455" value="" size="41></span>
</td>

更改为

<td>
<span><input id="Name" type="text" name="Name" maxlength="455" value="" size="41></span>
</td>

答案 2 :(得分:0)

除了name="Name";)

之外,您忘了设置id="Name"

答案 3 :(得分:0)

您应该为输入标记添加name属性,

<input id="Name" name="Name" type="text" maxlength="455" value="" size="41>