如何使我的联系表格发送给我电子邮件
问题描述:
这里是我的更新代码,试图让我的表单发送给我电子邮件。我在表单中添加了服务器PHP请求,但代码似乎没有读取它们。推动测试后,我的代码在网站上显示为文本。我记得有一次,我把PHP称为远离表单标记但不记得那个语法。如何使我的联系表格发送给我电子邮件
下面的代码我试图使用方法:
<?php
if ($_POST["email"]<>'') {
$ToEmail = '[email protected]';
$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"]."<br>";
$MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>";
$MESSAGE_BODY .= "URL: ".$_POST["url"]."<br>";
$MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"])."<br>";
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure");
?>
Your message was sent
<?php
} else {
?>
<p style="font-style:italic; font-size:12px; font-weigh: normal; margin-top: -89px; margin-left: 33px;">Contact me written in a different language.</p> <img src="http://www.cameroncashwell.com/imgs/pointing-left.png" style="float: right; margin-right: 140px; margin-top: -89px;">
<div class="form-div">
<form id="fvujq-form1" style="font-size:22px; color:#333;" method="post" action="">
<div class="form-row"><span class="label">Name *</span><input type="text" name="name" /></div>
<div class="form-row"><span class="label">Email *</span><input type="text" name="email" /></div>
<div class="form-row"><span class="label">URL</span><input type="text" name="url" /></div>
<div class="form-row"><span class="label">Comment *</span><textarea name="comment"></textarea></div>
<div class="form-row"><input class="submit" type="submit" value="Submit"></div>
</form>
</div>
<?php
};
?>
哪来我的错误?
答
电子邮件不是通过客户端中的JavaScript代码发送的;它是从服务器发送的。当用户点击提交,并且所有客户端验证都已通过时,表单数据会POST到服务器。表单元素的“action”属性指定服务器上的哪个URL应该接收POST的表单数据;即像action =“send_email.php”或类似的东西。
电子邮件如何在服务器上实际生成,完全取决于所使用的服务器技术,例如, PHP或JSP,或其他。
所以两件事是缺少在上面的代码:
- 行动值=形式,并
- 服务器端代码(PHP文件,或其他),将接收数据实际上发送电子邮件(对应于#1)
答
,并增加@ smendola的答案...
一旦你已经整理了服务器端的电子邮件发送你可能仍然不会收到你期待的电子邮件。有些电子邮件主机(实际上有很多)会检查发送服务器签名的有效性。如果失败(即没有签名或只有自签名签名),电子邮件主机可能会将该电子邮件作为垃圾邮件拒绝。
避免这种情况的一种方法是通过SMTP发送表单数据而不是PHP的本地send()函数。最简单的解决方案是PHPMAILER。例如,您可以通过Gmail account发送内容。
我在代码中看不到任何对'process_the_validated_fields_and_send_email.php'的调用,你可以把它放在form标签的action属性中,或者你也可以从你的验证js中调用它(不知道如何)。 – ptriek
或者扩展我之前的评论:哪里是处理输入并实际发送电子邮件的php代码?它在同一个文件中(在这种情况下,你需要action =“”)?或者它是一个不同的PHP文件?在这种情况下,您需要action =“different_php_file.php” – ptriek
[创建将发送指定信息到特定邮件地址的表单]的可能重复(http://stackoverflow.com/questions/8465007/creating-a -form-that-will-send-the-information-specified-to-a-specific-mail-adre) – Quentin