我正在尝试使用jquery和PHP发送电子邮件,但即使PHP成功执行,我也不会收到电子邮件。
这是我的javascript代码:
<script type='text/javascript'>
$("#formoid").submit(function(event) {
event.preventDefault();
var $form = $(this),
url = $form.attr('action');
var posting = $.post(url, {
name: $('#name').val(),
email: $('#email').val(),
message: $('#message').val()
});
posting.done(function(data) {
$("#result").empty().append('Thank you for contacting. Will get back to you as sson as possible.');
});
});
</script>
我的PHP看起来像这样:
<?php
if(isset($_POST['submit'])){
$to = "email@gmail.com"; // this is your Email address
$from = $_POST['email']; // this is the sender's Email address
$name = $_POST['name'];
$email = $_POST['email'];
$subject = "Portfolio form submission";
$message = $name . " " . $email . " wrote the following:" . "\n\n" . $_POST['message'];
$headers = "From:" . $from;
$headers2 = "From:" . $to;
mail($to,$subject,$message,$headers);
}
?>
当我提交表格并检查dom时,我看到结果很好。 在XHR详细信息中,它显示:
statusText: "OK"
我在这里做错了吗?
编辑: 按要求添加HTML:
<form class="no-bottom" id="formoid" action="contact.php" title="" method="post">
<label for="name" class="sr-only">Name</label>
<input type="text" class="underline" name="name" id="name" placeholder="Your name..." required>
<label for="email" class="sr-only">Email</label>
<input type="email" class="underline" name="email" id="email" placeholder="Your email..." required>
<label for="message" class="sr-only">Message</label>
<textarea class="underline" name="message" id="message" cols="30" rows="6" placeholder="Here goes the message..." required></textarea>
<div class="margin-1"></div>
<input type="submit" value="Send it">
</form>
答案 0 :(得分:1)
isset($_POST['submit'])
正在检查客户端发布的日期中是否存在密钥submit
。
但是,从客户端发送的数据不包括它。
var posting = $.post(url, {
name: $('#name').val(),
email: $('#email').val(),
message: $('#message').val()
});
要使其正常工作,您可以将其添加到POST数据中,也可以检查服务器中的其他密钥。
var posting = $.post(url, {
name: $('#name').val(),
email: $('#email').val(),
message: $('#message').val(),
submit: 'anythingTruthyHere' // Added `submit` key
});
或者,您可以检查POST数据中是否存在email
if (isset($_POST['email'])) {
// send mail code here
答案 1 :(得分:0)
你可以使用好的lib PHPMailer。使用PHPMailer,您可以轻松设置smtp服务器地址,端口和身份验证。如果要从本地计算机发送电子邮件,则必须在本地设置smtp服务器(如Postfix)。
答案 2 :(得分:0)
我会给你一个简短的想法,而不是像这样写代码,分开文件。将表单操作连接到一些sendemail.php并编写您在那里发送电子邮件的PHP代码,最后写下以下内容
header("Location: contact.php");
不需要javascript并且不会使代码变得复杂。这应该主要帮助。