2015-03-31 50 views
1

我已經創建了一個表單,它不發送電子郵件。我聯繫了我的主機,他說我需要SMTP認證。表單需要發送預訂信息。在我的PHP表單中需要SMTP認證?

這裏是我的reservation.php文件:

<script> 
 
/////////////////// RESERVATION FORM ////////////////////// 
 
     $("#ajax-contact-form").submit(function(){ 
 
      var str = $(this).serialize(); 
 
      document.getElementById('submit').disabled=true; 
 
      document.getElementById('submit').value='PLEASE WAIT'; 
 
      $.ajax({ 
 
       type: "POST", 
 
       url: "apartments_reservation_send.php", 
 
       data: str, 
 
       success: function(msg){ 
 
        $("#note").ajaxComplete(function(event, request, settings){ 
 
         if(msg == 'OK') 
 
         { 
 
          result = '<div class="notification_ok">Thank you!<br />Your request is successfully sent!</div>'; 
 
          $("#fields").hide(); 
 
         } 
 
         else 
 
         { 
 
          document.getElementById('submit').disabled=false; 
 
          document.getElementById('submit').value='Send request'; 
 
          result = msg; 
 
          autoReinitialise: true; 
 
         } 
 
         $(this).html(result); 
 
        }); 
 
       } 
 
      }); 
 
      return false; 
 
     }); 
 
</script> 
 

 
<form id="ajax-contact-form" action="javascript:alert('success!');"> 
 
          <table width="100%" cellpadding="3" cellspacing="3"> 
 
           <tr> 
 
            <td width="50%" align="right" style="text-align: right;"> 
 
             Arrival Date<span class="REQ">*</span> &rarr; <input id="arrivalDate" name="arrivalDate" size="30" type="text" class="date-pick" /> 
 
            </td> 
 
            <td width="50%" align="left" style="text-align: left;"> 
 
             <input id="departureDate" name="departureDate" size="30" type="text" class="date-pick" /> 
 
             &larr; <span class="REQ">*</span>Departure Date 
 
            </td> 
 
           </tr> 
 
           <tr> 
 
            <td width="50%" align="right" style="text-align: right;"> 
 
             Adults<span class="REQ">*</span> &rarr; 
 
             <select id="Adults" name="Adults"> 
 
              <option value=""></option> 
 
              <option value="0">0</option> 
 
              <option value="1">1</option> 
 
              <option value="2">2</option> 
 
              <option value="3">3</option> 
 
              <option value="4">4</option> 
 
             </select> 
 
            </td> 
 
            <td width="50%" align="left" style="text-align: left;"> 
 
             <select id="Children" name="Children"> 
 
              <option value=""></option> 
 
              <option value="0">0</option> 
 
              <option value="1">1</option> 
 
              <option value="2">2</option> 
 
              <option value="3">3</option> 
 
              <option value="4">4</option> 
 
             </select> 
 
             &larr; <span class="REQ">*</span>Children 
 
            </td> 
 
           </tr> 
 
          </table> 
 
          <table width="100%" cellpadding="3" cellspacing="3"> 
 
           <tr> 
 
            <td width="25%" align="right" valign="middle" style="text-align: right;">Name<span class="REQ">*</span> :</td> 
 
            <td width="75%" align="left" style="text-align: left;"> 
 
             <input type="text" id="name" name="name" value="" size="86" /> 
 
            </td> 
 
           </tr> 
 
           <tr> 
 
            <td align="right" valign="middle" style="text-align: right;">E-mail<span class="REQ">*</span> :</td> 
 
            <td align="left" style="text-align: left;"> 
 
             <input type="text" id="email" name="email" value="" size="86" /> 
 
            </td> 
 
           </tr> 
 
           <tr> 
 
            <td align="right" valign="middle" style="text-align: right;">Phone<span class="REQ">*</span> :</td> 
 
            <td align="left" style="text-align: left;"> 
 
             <input type="text" id="phone" name="phone" value="" size="86" /> 
 
            </td> 
 
           </tr> 
 
           <tr> 
 
            <td align="right" style="text-align: right;">Message :</td> 
 
            <td align="left" valign="top" style="text-align: left;"> 
 
             <textarea id="message" name="message" rows="5" cols="87"></textarea> 
 
            </td> 
 
           </tr> 
 
           <tr> 
 
            <td width="100%" align="center" style="text-align: center;" colspan="2"> 
 
             <input class="button" type="submit" name="submit" id="submit" value="Send request" /> 
 
            </td> 
 
           </tr> 
 
          </table> 
 
         </form>

這裏是我reservarion_send.php:

<?php 
 

 
$TO_EMAIL = "[email protected]"; 
 
$FROM_EMAIL = "[email protected]"; 
 
$FROM_NAME = "thebunchofgrapes.com"; 
 
$SUBJECT = "The Bunch Og Grapes - Apartment Reservation"; 
 
error_reporting (E_ALL^E_NOTICE); 
 
$post = (!empty($_POST)) ? true : false; 
 

 
if($post) 
 
{ 
 
    include 'functions.php'; 
 

 
    $ARIVAL_DATE  = trim($_POST['arrivalDate']); 
 
    $DEPARTURE_DATE  = trim($_POST['departureDate']); 
 
    $ADULTS    = trim($_POST['Adults']); 
 
    $CHILDREN   = trim($_POST['Children']); 
 
    $EMAIL    = trim($_POST['email']); 
 
    $PHONE    = trim($_POST['phone']); 
 
    $NAME    = stripslashes($_POST['name']); 
 
    $MESSAGE   = stripslashes($_POST['message']); 
 

 
    $ERROR = ''; 
 
    if(!$ARIVAL_DATE) 
 
    { 
 
     $ERROR .= 'Please enter Arrival Date<br />'; 
 
    } 
 
    if(!$DEPARTURE_DATE) 
 
    { 
 
     $ERROR .= 'Please enter Departure Date<br />'; 
 
    } 
 
    //if(!$ADULTS) 
 
    //{ 
 
     //$ERROR .= 'Please pick number of Adults<br />'; 
 
    //} 
 
    //if(!$CHILDREN) 
 
    //{ 
 
     //$ERROR .= 'Please pick number of Children<br />'; 
 
    //} 
 
    if(!$NAME) 
 
    { 
 
     $ERROR .= 'Please enter Your Name.<br />'; 
 
    } 
 
    if(!$EMAIL) 
 
    { 
 
     $ERROR .= 'Please enter Email address.<br />'; 
 
    } 
 
    if($EMAIL && !ValidateEmail($EMAIL)) 
 
    { 
 
     $ERROR .= 'Please enter valid Email address.<br />'; 
 
    } 
 
    if(!$PHONE) 
 
    { 
 
     $ERROR .= 'Please enter You Phone Number.<br />'; 
 
    } 
 
    //if(!$MESSAGE || strlen($MESSAGE) < 15) { 
 
     //$ERROR .= "Molimo unesite poruku. <br />Poruka mora imati najmanje 15 karaktera.<br />"; 
 
    //} 
 
    
 
    $FULL_MESSAGE = "ARIVAL DATE = $ARIVAL_DATE\nDEPARTURE DATE = $DEPARTURE_DATE\nADULTS = $ADULTS\nCHILDREN = $CHILDREN\nNAME = $NAME\nEMAIL = $EMAIL\nPHONE = $PHONE\nMESSAGE = $MESSAGE"; 
 
    
 
    if(!$ERROR) 
 
    { 
 
     $mail = mail($TO_EMAIL, $SUBJECT, $FULL_MESSAGE, 
 
      "From: ".$FROM_NAME." <".$FROM_EMAIL.">\r\n" 
 
      ."Reply-To: ".$FROM_EMAIL."\r\n" 
 
      ."X-Mailer: PHP/" . phpversion()); 
 

 
     if($mail) { 
 
      echo 'OK'; 
 
     } 
 
    } 
 
    else { 
 
     echo '<div class="notification_error">'.$ERROR.'</div>'; 
 
    } 
 

 
} 
 
?>

和他re是網頁的鏈接http://thebunchofgrapesinn.com/apartments_reservation

我不知道如何添加SMTP認證,這裏有什麼問題,有人可以幫忙嗎?

+0

請看看。 http://phpmailer.worxware.com/?pg=examplebsmtp – 2015-03-31 10:52:38

回答

0

php的mail()函數的行爲取決於服務器的操作系統。 Windows沒有內置的非SMTP選項,如基於Unix的服務器。一般來說,如果沒有一些關於標題的高級知識,它也是有限的。

如果這裏推薦的工具不適合這個工作,PHPMailer是一個方便的goto解決方案,用於從php發送郵件。如果你的服務器是基於Unix/Linux的,你可以省略$mail->isSMTP(),相關選項和PHPMailer將使用服務器的sendmail實現。如果您使用的是Windows或者有便捷的SMTP詳細信息,PHPMailer會使這一點變得簡單。

+0

我有phpmailer,但我不知道如何將它與我的表單連接? – 2015-03-31 11:02:16

+0

您不會以任何特殊方式將其與您的表單進行整合。您可以使用它來代替'mail()'函數和您的reservation_send.php腳本中的特殊頭處理。 – Red 2015-03-31 11:17:01

0

您可以使用PHPMailerSwiftmailer這些是發送smtp郵件的通用庫。 PhpMailer比swift簡單一些,文件很容易理解。

但是你可以編寫你自己的smtp客戶端,但首先你需要學習如何在php中建立套接字連接。 PHPMailers smtp clas s是創建一個很好的提示。

如果您擁有服務器的管理員權限,則可以將sendmail郵件功能連接到smtp服務器here is a documantation how to。 Php有一個mail configuration選項的smtp,但我從來沒有用過它。

順便說一下,php.ini有一個sendmail_path選項來讀取您的STDOUT數據併發送郵件。如果你願意,你可以用bash,php或python腳本來改變這個sendmail_path參數。但我不推薦它。

+0

是的我試圖使用Phpmailer,但我不明白它是如何工作的,以及如何保留我的表單並將其與phpmailer連接 – 2015-03-31 11:23:56

+0

首先,您需要將phpmailer存儲庫克隆到您的項目庫或根文件夾。然後添加** require __DIR __。'where_your_phpmailer/PHPMailerAutoload.php'; **您的reservation_send.php的頂部,但請確保您輸入正確的路徑。之後,你可以看看phpmailer的示例文件夾,並使用你需要的一個[https://github.com/PHPMailer/PHPMailer/blob/master/examples/smtp.phps](這一個)。 – 2015-03-31 11:36:35

+0

和我應該把什麼字段 $ mail-> Host =「mail.example.com」; $ mail-> Username =「[email protected]」; $ mail-> Password =「yourpassword」; – 2015-04-01 08:27:33

0

大多數主機都已配置SMTP。
爲了調試測試郵件()函數使seperately.Just像「mail.php」一個文件,並把下面的代碼在它:

<?php 
 
     $email ="PUT EMAIL ID OF USER HERE";  
 
    
 
     $subject ="Reservation Info"; 
 
    
 
     $headers = "From: " . '<thebunchofgrapesinn.com/>' . "\r\n"; 
 
     $headers .= "Reply-To: ". $email . "\r\n"; 
 
     $headers .= "MIME-Version: 1.0\r\n"; 
 
     $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
 
    
 
    $message = "<html> 
 
     <body> 
 
      <p>Its Just A Testing Mail</p> 
 
     </body> 
 
     </html>"; 
 

 
    if(mail($email,$subject, $message, $headers)){ 
 
     echo 'mail sent'; 
 
    } 
 

 
?>

檢查天氣它的工作原理或不。
也喜歡使用phpmailer。
Here is the link for downloding PHPmailer class it also has example.