我在网上发现了一个好的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字段仅供我查看谁发送邮件而无需打开邮件。它也应该是用户的邮件地址或用户名。
我希望自己足够清楚?
在此先感谢,我已经在本网站上找到了许多关于其他主题的有价值的答案:)
乙
答案 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>