2015-03-31 2 views
1

Я создал форму и не отправил электронные письма. Я связался с моим хостом, и он сказал, что мне нужна аутентификация SMTP. Форма должна отправить информацию о бронировании.Нужна аутентификация SMTP в моей форме PHP?

Вот мой 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 –

ответ

0

Поведение функции php mail() варьируется в зависимости от ОС сервера. Windows не имеет встроенной опции, отличной от SMTP, такой как серверы на основе Unix. mail() также ограничен вообще без каких-либо дополнительных знаний о работе с заголовками.

Если здесь нецелесообразно рекомендовать инструмент для работы, PHPMailer является достаточно удобным решением для отправки электронной почты с php. Если ваш сервер основан на Unix/Linux, вы можете оставить $mail->isSMTP(), а связанные параметры и PHPMailer будут использовать реализацию sendmail сервера. Если вы работаете в Windows или имеете SMTP-данные, то PHPMailer делает это достаточно простым.

+0

Я получил phpmailer, но я не могу понять, как связать его с моими формами? –

+0

Вы не будете интегрировать его с вашей формой каким-либо особым образом. Вы использовали бы его вместо функции 'mail()' и специальной обработки заголовка внутри вашего сценария reserve_send.php. – Red

0

Вы можете использовать PHPMailer и Swiftmailer, это общие библиотеки для отправки smtp-писем. PhpMailer немного проще, чем быстро, и документация легко понять.

Но вы можете написать свой собственный клиент smtp для этого, но сначала вам нужно узнать, как создать соединение сокета в php. PHPMailers smtp clas s является хорошим советом для его создания.

Если у вас есть права администратора для вашего сервера, вы можете подключить почтовую функцию sendmail к SMTP-серверу, here is a documantation how to. Php имеет параметр mail configuration для smtp, хотя я никогда не использовал его раньше.

Кстати, php.ini имеет параметр sendmail_path для чтения данных STDOUT и отправки почты. Если вы хотите, вы можете изменить этот параметр sendmail_path с помощью сценария bash, php или python. Но я не рекомендую его.

+0

Да, я пытался использовать Phpmailer, но я не понимаю, как это работает, и как сохранить форму, которую у меня есть, и связать ее с phpmailer. –

+0

Сначала вам нужно клонировать репозиторий phpmailer в вашу библиотеку проектов или в корневую папку. Затем добавьте ** require __DIR __. 'Where_your_phpmailer/PHPMailerAutoload.php'; ** вверху вашего резервирования_send.php, но убедитесь, что вы ввели правильный путь для него. После этого вы можете посмотреть папку примеров phpmailer и использовать тот, который вам нужен, например [https://github.com/PHPMailer/PHPMailer/blob/master/examples/smtp.phps](этой). –

+0

и что я должен положить на поля $ mail-> Host = "mail.example.com"; $ mail-> Username = "[email protected]"; $ mail-> Password = "yourpassword"; –

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.

Смежные вопросы