AngularJS:使用$ http命中mail.php时得到响应

时间:2016-10-12 06:23:09

标签: php angularjs

这是我的控制器功能:

$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;
            }
        });
    }
};

我的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中应该做些什么更改,以便发送电子邮件并获得成功和错误的正确响应。

1 个答案:

答案 0 :(得分:0)

要访问后期数据,请在php文件中使用:

template <typename T>
constexpr auto test() -> bool { return true; }

template <typename T, typename U, typename... Rest>
constexpr auto test()
{
  return test<U,Rest...>();
}

之后使用

  

$ var_name = $ data_object-&gt; var_name;

访问后期数据