2017-05-08 90 views
0

每當我點擊發送按鈕它總是觸發0值(否則部分)。每當我點擊發送按鈕它總是發射0值(其他部分)。我是無法在Yii 2.0框架中藉助PHPMailer在服務器上發送郵件。我無法通過Yii 2.0框架中的PHPMailer幫助在服務器上發送郵件。請提前幫助我,並感謝您。我無法發送郵件的幫助哦PHPMailer在yii 2.0

<?php   

    //Check e-mail validation 
    function check_email($email){ 
    if([email protected]("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)){ 
      return false; 
     } else { 
      return true; 
     } 
    } 
    function validate_mobile($mobile) 
    { 
     return preg_match('/^[0-9]{10}+$/', $mobile); 
    } 

    //Get post data 
    if(isset($_POST['name']) and isset($_POST['email']) and isset($_POST['mobile'])){    
     $name  = $_POST['name']; 
     $email  = $_POST['email']; 
     $mobile  = $_POST['mobile']; 
     $comment = $_POST['comment']; 

     if($name == '') { 
      echo json_encode(array('info' => 'error', 'msg' => "Please enter your name.")); 
      exit(); 
     } else if($email == '' or check_email($email) == false){ 
      echo json_encode(array('info' => 'error', 'msg' => "Please enter valid e-mail.")); 
      exit(); 
     } else if($mobile == '' or validate_mobile($mobile) == false){ 
      echo json_encode(array('info' => 'error', 'msg' => "Please enter 10 digit mobile number.")); 
      exit(); 
     } else if($comment == ''){ 
      echo json_encode(array('info' => 'error', 'msg' => "Please enter your message.")); 
      exit(); 
     } else { 

     $message = ' 
      <html> 
      <head> 
       <title>Mail from '. $name .'</title> 
      </head> 
      <body> 
       <table border="0" cellspacing="0" cellpadding="0" class="tableContent bgBody" align="center" style="font-family:Helvetica, sans-serif; width:100%;"> 
       <tr> 
        <td style="padding-bottom: 28px;">     
         <table style="font-size:14px;width:100%;">       
          <tr> 
           <td style="width:18%;"> 
            <b>Name :</b>   
           </td> 
           <td> 
            <span style=""> 
             '.$name.' 
            </span> 
           </td> 
          </tr> 

          <tr> 
           <td style="width:18%;"> 
            <b>Email :</b>   
           </td> 
           <td> 
            <span style=""> 
             '.$email.' 
            </span> 
           </td> 
          </tr> 

          <tr> 
           <td> 
            <b>Contact Number :</b> 
           </td> 
           <td> 
            <span style=""> 
             '.$mobile.' 
            </span> 
           </td> 
          </tr> 

          <tr> 
           <td> 
            <b>Message :</b> 
           </td> 
           <td> 
            <span style=""> 
             '.$comment.' 
            </span> 
           </td> 
          </tr> 
         </table>      
        </td> 
       </tr>     
      </table> 
      </body> 
      </html> 
      '; 

     require 'PHPMailer/PHPMailerAutoload.php'; 

     //Send Mail 
     $mail->addReplyTo = "[email protected]"; 
     $mail->subject = 'Xion-Solutions'; 
     $mail->setFrom = $email; 
     $mail->Body = $message; 


     $mail = new PHPMailer; 
     $mail->isSMTP();    
     $mail->SMTPSecure = 'ssl';       
     $mail->SMTPDebug = 1; 
     $mail->Debugoutput = 'html'; 
     $mail->isSMTP();          
     $mail->Host = 'mail.xionproaudio.com';    
     $mail->SMTPAuth = true;        
     $mail->Username = '[email protected]';   
     $mail->Password = '[email protected]$';       
     $mail->Port = 465; 
     $mail->IsHTML(true); 


      if($mail->send()){ 
       echo 1; 
      }else{ 
       echo 0; 
      } 

     } 
    } else { 
     echo json_encode(array('info' => 'error', 'msg' => __MESSAGE_EMPTY_FILDS__)); 
    } 
?> 
+0

那麼你會得到什麼錯誤? – ArtOsi

+0

你爲什麼不使用Yii內建的Mailer? http://www.yiiframework.com/doc-2.0/guide-tutorial-mailing.html – kyle

+0

我們需要你得到的錯誤。嘗試看看$ mail-> ErrorInfo說 – Chux

回答

0

我第二次通話使用的Yii內置的郵件類 - 如果你要使用框架,使用的框架。

與PHPMailer一樣:Read the PHPMailer troubleshooting guide,將您的代碼基於the examples provided with PHPMailer,使用the latest version

這裏有很多基本的問題。

  • 您沒有給它發送地址。
  • 您正在僞造發件人地址。
  • 您正在使用自己的地址作爲回覆。
  • 您正試圖設置屬性名稱是方法。
  • 您忽略了PHP屬性名稱區分大小寫。
  • 如果發送失敗,則不會生成任何錯誤消息輸出。
  • 您已將調試輸出設置爲僅顯示客戶端消息,因此您無法看到發生了什麼。

如果您將代碼放在其中一個示例中,您將避免大多數這些問題。您需要修復的主要部分是:

$mail->addAddress('[email protected]', 'Xion-Solutions'); 
$mail->setFrom('[email protected]', 'Xion-Solutions'); 
$mail->addReplyTo($email, $name); 
$mail->Subject = 'Xion-Solutions'; 
$mail->SMTPDebug = 2; 

爲什麼要滾動您自己的驗證器? PHPMailer內置了一個可以靜態調用的更好的方法,但它無論如何都可以自動接受地址。