AngularJS:当使用$http点击mail.php时获得响应


AngularJS : to get response when hitting mail.php using $http

这是我的控制器函数:

$scope.submitContactForm = function() {
    $log.info($scope.contact);
    if ($scope.contactform.$valid) {
        $http({
            method  : 'POST',
            url     : 'http://blog.local/php/mail.php',
            data    : $scope.contact, //forms user object
            headers : {'Content-Type': 'application/x-www-form-urlencoded'}
        })
        .success(function(data) {
            $log.info(data);
            if (data.errors) {
                // Showing errors.
            } else {
                $scope.messageForm = data.message;
            }
        });
    }
};

和my mail。php

<?php
session_start();
require_once('class.phpmailer.php');
require_once('class.smtp.php');
if($_POST) {
if( !isset($_SESSION['sended']) ) {
    // Re-check with php
    if( isset( $_POST['name'] ) && !empty( $_POST['name'] ) ):
        $name = filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING);
    else:
      echo $error = 'Name is empty!';
       return;
    endif;
    if( isset( $_POST['contactlastname'] ) && !empty( $_POST['contactlastname'] ) ):
        $lastname = filter_var(trim($_POST['contactlastname']), FILTER_SANITIZE_STRING);
        // Add lastname to name
        $name = ($lastname) ?  $name. ' ' .$lastname : $name;
    endif;
    if( isset( $_POST['email'] ) && !empty( $_POST['email'] ) ):
        $email = filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL);
            if( !filter_var( $email , FILTER_VALIDATE_EMAIL ) ):
               echo $error = 'Email is not valid!';
                return;
            endif;
    else:
        echo $error = 'Email is empty!';
      return;
    endif;
   if( isset( $_POST['subject'] ) && !empty( $_POST['subject'] ) ):
        $subject = filter_var(trim($_POST['subject']), FILTER_SANITIZE_STRING);
    else:
        $subject = "Hello";
    endif;
    if( isset( $_POST['message'] ) && !empty( $_POST['message'] ) ):
         $message = filter_var(trim($_POST['message']), FILTER_SANITIZE_STRING);
    else:
      echo  $error = 'Message is empty!';
        return;
    endif;
   if(!isset($error)) {
        // if we have no validation errors prepare mail
        $mail = new PHPMailer;
        $mail->isSMTP();
        $mail->SMTPDebug = 0;
        $mail->Debugoutput = 'html';
        //Set the hostname of the mail server gmail - yandex- outlook or your hosting's
        $mail->Host = "smtp.gmail.com"; // <------------ change with your host name
        // use
        // $mail->Host = gethostbyname('smtp.gmail.com');
        // if your network does not support SMTP over IPv6
        //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
        $mail->Port = 465; // <------------ Change with port 25 - 465 - 587 and etc..
        //Set the encryption system to use - ssl (deprecated) or tls
        $mail->SMTPSecure = 'ssl'; // <------------ tls (port 587) or ssl (port 465)
        //Whether to use SMTP authentication
        $mail->SMTPAuth = true;
        //Username to use for SMTP authentication - use full email address for gmail
        $mail->Username = "sharjilk62@gmail.com"; // <------------ Smtp authentication - username here
        //Password to use for SMTP authentication
        $mail->Password = ""; // <------------ Smtp authentication -password here
        $mail->setFrom($email, $name);
        $mail->AddReplyTo($email,$name);
        //Set who the message is to be sent to --- CHANGE THIS EMAIL ADDDRES WITH THE ONE YOU WANT TO RECEIVE EMAILS AND WWIT YOUR NAME
        $mail->addAddress('sharjilk62@gmail.com', 'Sharjil'); // <----------- CHANGE YOUR WITH YOUR EMAIL ADDRES
        $mail->Subject = $subject;
        $mail->msgHTML($message);
        // If send me copy checkbox is checked send a copy to user
        if( isset( $_POST['contactselfemail'] ) ):
            $mail->addCC($email);
        endif;
        // Send mail and report the result
        if($mail->send()):
            echo 'success';
            $_SESSION['sended'] = 'sended';            
        else:
            echo 'error';
            unset( $_SESSION['sended'] );
        endif;
    }
} else {
    echo 'already';
}
}
?>

当我使用$http点击mail.php时,它给我空字符串作为响应,电子邮件没有发送到我的收件箱。我不太懂php。有没有人能告诉我应该在mail.php中做什么改变,以便电子邮件可以发送,并获得成功和错误的适当响应。

访问post-data,在php文件中使用:

$postdata = file_get_contents("php://input");
$data_object = json_decode($postdata);

之后使用

$var_name = $data_object->var_name;

访问post-data