【发布时间】:2014-04-12 15:42:28
【问题描述】:
我正在尝试创建一个基本表单来发送电子邮件,它的外观如下: http://www.unitedserbians.com/contact_us.html
我已经完成了所有工作并已搞定,除了表单完成处理后我无法发送实际的电子邮件。我的函数在我的字段验证运行良好时执行,我可以看到通过取消注释 JAVA 脚本代码“alert (dataString);return false;”从表单中获取了正确的值甚至 .ajax 也会执行,因为我收到“已发送联系表格!我们会尽快联系”。消息显示,但实际的电子邮件永远不会被发送。我猜测 process.php 文件中缺少某些内容。我无法追踪以查看问题发生在哪里,或者我的 process.php 是否曾经执行过。该文件是否应该与 JAVA 脚本位于同一目录中?或在主目录 bin 文件夹中?还是我在流程代码中盲目地遗漏了什么?有人能发现我错过了什么吗?非常感谢提前。
HTML:
<div class="content">
<div class="content_resize">
<div class="mainbar">
<div class="article">
<h2><span>Send us E-Mail</span></h2>
<div id="contact_form">
<form action="" form name="contact">
<fieldset>
<ol>
<li>
<label for="name" id="name_label">Your Full Name</label>
<input type="text" name="name" id="name" size="30" value="" class="text-input" />
<label2 class="error" for="name" id="name_error">This field is required.</label2>
</li>
<li>
<label for="email" id="email_label">Your Email Address</label>
<input type="text" name="email" id="email" size="30" value="" class="text-input" />
<label2 class="error" for="email" id="email_error">This field is required.</label2>
</li>
<li>
<label for="website id="phone_label">Your Phone Number</label>
<input type="text" name="phone" id="phone" size="30" value="" class="text-input" />
<label2 class="error" for="phone" id="phone_error">This field is required.</label2>
</li>
<li>
<label for="message">Your Message</label>
<textarea id="message" name="message" rows="8" cols="50"></textarea>
</li>
<li>
<input type="submit" name="imageField" id="submit_btn" src="images/submit.gif" class="send" />
</li>
</ol>
</fieldset>
</form>
</div>
</div>
</div>
JAVA 脚本:
$(function() {
$('.error').hide();
$(".send").click(function() {
// validate and process form here
$('.error').hide();
var name = $("input#name").val();
if (name == "") {
$("label2#name_error").show();
$("input#name").focus();
return false;
}
var email = $("input#email").val();
if (email == "") {
$("label2#email_error").show();
$("input#email").focus();
return false;
}
var phone = $("input#phone").val();
if (phone == "") {
$("label2#phone_error").show();
$("input#phone").focus();
return false;
}
var message = $("textarea#message").val();
var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone + '&message=' + message;
// alert (dataString);
// return false;
$.ajax({
type: "POST",
url: "bin/process.php",
data: dataString,
success: function() {
$('#contact_form').html("<div id='send_message'></div>");
$('#send_message').html("<h2>Contact Form Sent!</h2>")
.append("<p>We will be in touch soon.</p>");
}
});
return false;
});
});
PHP:
<?php
$email_to = "XXXXX@gmail.com";
$email_subject = "Message sent using contact form.";
$name = $_POST['name']; // required
$email_from = $_POST['email']; // required
$phone = $_POST['phone']; // required
$message = $_POST['message'];
$email_message .= "Full Name: ".clean_string($name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Phone Number: ".clean_string($phone)."\n";
$email_message .= "Message: ".clean_string($message)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
【问题讨论】:
-
代码太多。如果没有发送邮件,为什么要抑制邮件功能的错误输出?
-
对不起,我不确定你的意思?你能说得具体一点吗?
-
看你自己的代码。如果你不知道它是做什么的,你从哪里得到它?为什么
mail函数之前有一个@符号?谷歌那个。 -
Php 和 sendmail 从来都不是一个好的组合(只是似乎从来没有对我有用)。我经常做的是在我的本地邮件服务器中创建一个 php 套接字并使用 SMTP 发送邮件。
-
即使我删除@它也不起作用。我只是在测试,因为我在论坛上看到有人在使用,所以值得一试,因为我很绝望。在邮件功能之前删除@仍然不起作用。
标签: javascript php ajax forms email