// Java script
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
var $form = $( this );
$.ajax({
type: 'POST',
url: "sendemail.php",
data:{
Name:$form.find( "input[name='name']" ).val() ,
Subject:$form.find( "input[name='subject']" ).val() ,
Email:$form.find( "input[name='email']" ).val() ,
message: $form.find("textarea[name=message]").val(),
},
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">Thank you for contact us. As early as possible we will contact you</p>').delay(3000).fadeOut();
});
});
&#13;
我在000webhost上自由计划上运行表单(现在尝试使用herokuapp),他们说它们支持邮件功能。 Php在一个名为sendemail.php的不同文件中分隔,我在php文件中替换了我的电子邮件,但我无法接收任何电子邮件,可能是什么问题?任何带代码的答案都会有所帮助
<!--Html form -->
<form id="main-contact-form" name="contact-form" method="post" action="#">
<div class="form-group">
<input type="text" name="name" class="form-control" placeholder="Name" required>
</div>
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Email" required>
</div>
<div class="form-group">
<input type="text" name="subject" class="form-control" placeholder="Subject" required>
</div>
<div class="form-group">
<textarea name="message" class="form-control" rows="8" placeholder="Message" required></textarea>
</div>
<button type="submit" class="btn btn-primary">Send Message</button>
</form>
&#13;
sendemail.php文件
$name = @trim(stripslashes($_POST['name']));
$from = @trim(stripslashes($_POST['email']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));
$to = 'email@live.com';//replace with your email
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: {$name} <{$from}>";
$headers[] = "Reply-To: <{$from}>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
mail($to, $subject, $message, $headers);
die;
答案 0 :(得分:0)
除非您使用javascript设置表单操作或邮件处理代码位于同一页面中,否则您需要将表单操作设置为邮件处理程序。此外,传递给mail
您可能还希望在发送邮件之前清理/验证POST请求中发送的一些内容吗?
邮件一旦发送,您应该做的事情不是让用户留下空白页面 - 例如,可能会重定向到一个谢谢页面。
<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php">
<div class="form-group">
<input type="text" name="name" class="form-control" placeholder="Name" required>
</div>
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Email" required>
</div>
<div class="form-group">
<input type="text" name="subject" class="form-control" placeholder="Subject" required>
</div>
<div class="form-group">
<textarea name="message" class="form-control" rows="8" placeholder="Message" required></textarea>
</div>
<button type="submit" class="btn btn-primary">Send Message</button>
</form>
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' && isset( $_POST['name'], $_POST['email'], $_POST['subject'], $_POST['message'] ) ){
$name = trim(stripslashes($_POST['name']));
$from = trim(stripslashes($_POST['email']));
$subject = trim(stripslashes($_POST['subject']));
$message = trim(stripslashes($_POST['message']));
$to = 'email@live.com';//replace with your email
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: {$name} <{$from}>";
$headers[] = "Reply-To: <{$from}>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
$result=mail( $to, $subject, $message, implode( "\r\n", $headers ) );
exit( header( 'Location: index.php?mailsent='.$result ) );
}
?>
使用以下方法测试mail
的基础知识:
mail( 'your.email@example.com','subject foo','message received' );
如果您使用mail
的最基本用法向自己发送消息并且它到达那么所有应该对代码很好,可能是一些调整。如果您的邮箱中没有任何内容,则表示存在问题,您需要与主机确认支持mail
功能。