无法从html-php联系表单接收消息

时间:2016-08-16 09:03:00

标签: javascript php html



// 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;
&#13;
&#13;

我在000webhost上自由计划上运行表单(现在尝试使用herokuapp),他们说它们支持邮件功能。 Php在一个名为sendemail.php的不同文件中分隔,我在php文件中替换了我的电子邮件,但我无法接收任何电子邮件,可能是什么问题?任何带代码的答案都会有所帮助

&#13;
&#13;
<!--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;
&#13;
&#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;

1 个答案:

答案 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>

sendemail.php

<?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功能。

相关问题