简体   繁体   English

邮件功能返回false,并且不以php形式发送邮件

[英]mail function return false and does not mail in php

I am working in html and php.I want to send mail for hotel booking.And I am working in server not in localhost. 我正在使用html和php.I要发送邮件以进行酒店预订。而且我正在服务器中工作,而不是在本地主机中。

My html file is like this. 我的html文件是这样的。

index.html index.html

<form id="reservation-form" method="post" action="sendemail.php"> 
<div class="clearfix anim-7-all wow fadeIn" data-wow-delay="0" data-wow-duration="1.5s" data-wow-offset="5">

    <div class="col-md-4 col-sm-6 col-xs-12 form-group">
        <input type="text" name="name" value="" placeholder="Name">
    </div>
    <div class="col-md-4 col-sm-6 col-xs-12 form-group">
        <input type="email" name="email" value="" placeholder="Email">
    </div>
    <div class="col-md-4 col-sm-6 col-xs-12 form-group">
        <input type="text" name="message" class="date-picker" value="" placeholder="Date">
    </div>
    <div class="col-md-4 col-sm-6 col-xs-12 form-group">
        <input type="text" name="subject" value="" placeholder="Time">
    </div>

</div>

<div class="clearfix"><input type="submit" class="theme-btn pull-right" name="s" value="Send" /></div>

</form>

This is my php file. 这是我的php文件。

sendemail.php sendemail.php

Here I got all posted value.But i could not send mail. 在这里,我得到了所有已发布的值。但是我无法发送邮件。

// Define some constants
define( "RECIPIENT_NAME", "John Doe" ); 
define( "RECIPIENT_EMAIL", "example@gmail.com" );



$senderName = isset( $_POST['name'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['name'] ) : "";
$senderEmail = isset( $_POST['email'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['email'] ) : "";
$subject = isset( $_POST['subject'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['subject'] ) : "";
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";

// If all values exist, send the email
if ( $senderName && $senderEmail && $message ) {
$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
$headers = "From: " . $senderName . " <" . $senderEmail . ">";
$suc= mail($recipient,$subject,$message,$headers );
//var_dump($suc);

} }

When I return mail it retun false. 当我退回邮件时,它将重新调整为false。 So what code should i have to write to solve this? 那么我应该写什么代码来解决这个问题?

You can use error_get_last() when mail() returns false. mail()返回false时,可以使用error_get_last()

Place the below code after $suc = mail() line. 将以下代码放在$suc = mail()行之后。

if($suc){//If success
   print_r("No error");        
}
else{//If error on mail send
   print_r(error_get_last());
}
exit();//Remove this after debuging done 

Please let me know if you face any error regarding this. 如果您在此方面遇到任何错误,请告诉我。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM