2013-11-30 3 views
0

Я имею проблему с отправкой почты с моего сайта на свой собственный счет Outlook.com, проблема заключается в том, что если кто-то использует мою контактную форму он не отправляет почту мне ,PHP отправки почты с Javascript

Обычно все в PHP с процессом почты будет работать, но на этот раз я привычный использовать JavaScript с ней так, что моя форма делает все автоматически. Я не получаю сообщение об ошибке, я получаю сообщение о отправке электронной почты.

//Contact script. 
if(isset($_POST['submit'])) 
{ 
    $sName  = trim($_POST['author']); 
    $sEmail = trim($_POST['email']); 
    $sMessage = trim($_POST['comment']); 

    if(empty($sName)) 
    { 
     $nameError = 'U bent uw naam vergeten'; 
     $hasError = true; 
    } 

    if(empty($sEmail)) 
    { 
     $emailError = 'U bent uw email adres vergeten'; 
     $hasError = true; 
    } 
    elseif(!filter_var($sEmail, FILTER_VALIDATE_EMAIL)) 
    { 
     $emailError = 'Uw mail adres is niet geldig!'; 
     $hasError = true; 
    } 

    if(empty($sMessage)) 
    { 
     $commentError = 'U hebt geen bericht opgegeven'; 
     $hasError  = true; 
    } 

//Mail versturen. 
if(!isset($hasError)) 
{ 
    $weNaam = 'RASolutions'; 
    $eiMail = '[email protected]'; 
    $erMail = '[email protected]'; 
    $nAfzender = 'RASolutions'; 
    $afMail = '**********@.nl'; 
    $baMail = '[email protected]'; 
    $aHtml  = true; 

     // De headers samenstellen 
     $headers  = 'From: <' . $weNaam . '> '. PHP_EOL ; 
     $headers .= 'Reply-To: <' . $nAfzender . '> <' . $eiMail . '>' . PHP_EOL; 
     $headers .= ($baMail != '') ? 'Bcc: <' . $baMail . PHP_EOL : ''; 
     $headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL; 
     $headers .= 'X-Priority: Normal' . PHP_EOL; 
     $headers .= ($aHtml) ? 'MIME-Version: 1.0' . PHP_EOL : ''; 
     $headers .= ($aHtml) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : ''; 

     $sBericht = " 
     Beste, <br /> 
     <br /> 
     er is gebruik gemaakt van het contact formulier op RASolutions.<br /> 
     Het mail adres dat hiervoor is gebruikt: <strong>".$sEmail."</strong>, de    naam van degene is <strong>".$sName."</strong>.<br /> 
     <br /> 
     <i>Onderstaande het bericht:</i> 
     ".$sMessage." 
     <br /> <br /> 

     Met vriendelijke groet, <br /> 
     RASolutions helpdesk. 
     "; 

       //Verzonden. 
     $mail = mail($afMail, "Contact || RASolutions", $sBericht, $headers); 
     $emailSent = true; 
       } 

       } 

Мой HTML форма и часть JS:

   <?php 
       if(isset($emailSent) && $emailSent == true) 
       { 
       ?> 
       <div class="succes closable">Uw mail is succesvol verstuurd! U zal in 48 uur een antwoord krijgen.</div> 
       <?php 
       } 
       if(isset($hasError) || isset($captchaError)) 
       { 
       ?> 
       <div class="warning closable">Er zijn wat problemen opgetreden.</div> 
       <?php 
       } 
       ?> 
       <form id="contact-us" action="" method="post"> 
         <p> 
          <label for="author">Naam</label> 
          <input id="author" class="aqua_input" name="author" type="text" placeholder=""/> 
         </p> 
         <p> 
          <label for="email">Email</label> 
          <input id="email" class="aqua_input" name="email" type="email" placeholder=""/> 
         </p> 
         <p>  
          <label for="comment">Bericht</label> 
          <textarea id="comment" rows="8" class="aqua_input" name="comment" placeholder=""></textarea> 
         </p> 
         <p class="form-submit"> 
          <input name="submit" type="submit" id="submit" value="Verstuur" class="sm_button"> 
         </p>       
        </form> 
    <script type="text/javascript"> 
    <!--//--><![CDATA[//><!-- 
    $(document).ready(function() 
    { 
     $('form#contact-us').submit(function() 
     { 
      $('.warning closable').remove(); 
      var hasError = false; 
      $('.aqua_input').each(function() 
      { 
       if($.trim($(this).val()) == '') 
       { 
        var labelText = $(this).prev('label').text(); 
        $(this).parent().append('<div class="warning closable">U bent uw '+labelText+' vergeten op te geven</div>'); 
        $(this).addClass('inputError'); 
        hasError = true; 
       } 
       else if($(this).hasClass('email')) 
       { 
        var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
        if(!emailReg.test($.trim($(this).val()))) 
        { 
         var labelText = $(this).prev('label').text(); 
         $(this).parent().append('<div class="warning closable"><strong>Helaas!</strong> Uw ingevoerde waardes zijn ongeldig: '+labelText+'</div>'); 
         $(this).addClass('inputError'); 
         hasError = true; 
        } 
       } 
      }); 
      if(!hasError) 
      { 
       var formInput = $(this).serialize(); 
       $.post($(this).attr('action'),formInput, function(data) 
       { 
        $('form#contact-us').slideUp("fast", function() 
        {     
         $(this).before('<div class="success closable"><strong>Bedankt!</strong> U zal in 48 uur een antwoord krijgen. </div>'); 
        }); 
       }); 
      } 

      return false; 
     }); 
    }); 
    //-->!]]> 
</script> 

ответ

0
$.post($(this).attr('action'),formInput, function(

Я полагаю $(this).attr('action') здесь пусто и JS не знаю, где разместить ДАННЫЕ. Замените это значение на реальный путь, где вы публикуете данные. Также вы проверяете, есть ли у вас какие-либо ошибки в консоли вашего браузера (F12)?

+0

Извините, но я не знаю, о чем вы говорите: «Заменить это значение реальным путем»? Какое значение здесь принадлежит? Потому что я думал, что PHP и JS не нужно связываться друг с другом. – RezaM

+0

Вам нужно разместить свои данные где-то, здесь ваше поле действия в форме пуст. Поэтому укажите реальный путь/файл, в который вы хотите отправить форму. Проверьте примеры здесь: http://api.jquery.com/jQuery.post/ – zeflex

+0

Спасибо, после нескольких часов попыток исправить это я решил использовать только PHP. Но я использовал вашу ссылку, чтобы исправить другие JS-формы на моем сайте, и это сработало :-) – RezaM

0
$mail = mail($afMail, "Contact || RASolutions", $sBericht, $headers); 
$emailSent = true; 

Вместо того, чтобы делать это, проверьте значение $mail, это результат функции, истинным или ложным.

Затем, если вы попытаетесь сторону PHP в одиночку, это работает?

Как, если вы запустите его так:

<?php 
$_POST['author'] = 'asdasdas'; 
$_POST['email'] = '[email protected]'; 
$_POST['comment'] = 'asdasd'; 

if (1 || isset($_POST['submit'])) { 
    $sName = trim($_POST['author']); 
    $sEmail = trim($_POST['email']); 
    $sMessage = trim($_POST['comment']); 

    if (empty($sName)) { 
     $nameError = 'U bent uw naam vergeten'; 
     $hasError = true; 
    } 

    if (empty($sEmail)) { 
     $emailError = 'U bent uw email adres vergeten'; 
     $hasError = true; 
    } elseif (!filter_var($sEmail, FILTER_VALIDATE_EMAIL)) { 
     $emailError = 'Uw mail adres is niet geldig!'; 
     $hasError = true; 
    } 

    if (empty($sMessage)) { 
     $commentError = 'U hebt geen bericht opgegeven'; 
     $hasError  = true; 
    } 

    //Mail versturen. 
    if (!isset($hasError)) { 
     $weNaam = 'RASolutions'; 
     $eiMail = '[email protected]'; 
     $erMail = '[email protected]'; 
     $nAfzender = 'RASolutions'; 
     $afMail = '**********@.nl'; 
     $baMail = '[email protected]'; 
     $aHtml  = true; 

     // De headers samenstellen 
     $headers = 'From: <' . $weNaam . '> ' . PHP_EOL; 
     $headers .= 'Reply-To: <' . $nAfzender . '> <' . $eiMail . '>' . PHP_EOL; 
     $headers .= ($baMail != '') ? 'Bcc: <' . $baMail . PHP_EOL : ''; 
     $headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL; 
     $headers .= 'X-Priority: Normal' . PHP_EOL; 
     $headers .= ($aHtml) ? 'MIME-Version: 1.0' . PHP_EOL : ''; 
     $headers .= ($aHtml) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : ''; 

     $sBericht = " 
    Beste, <br /> 
    <br /> 
    er is gebruik gemaakt van het contact formulier op RASolutions.<br /> 
    Het mail adres dat hiervoor is gebruikt: <strong>" . $sEmail . "</strong>, de    naam van degene is <strong>" . $sName . "</strong>.<br /> 
    <br /> 
    <i>Onderstaande het bericht:</i> 
    " . $sMessage . " 
    <br /> <br /> 

    Met vriendelijke groet, <br /> 
    RASolutions helpdesk. 
    "; 

     //Verzonden. 
     $mail  = mail($afMail, "Contact || RASolutions", $sBericht, $headers); 
     var_dump($mail); 
     $emailSent = true; 
    } 

} 
+0

Если я запускаю его PHP стороне только он будет работать, но с JS стороны от него, он не будет. Спасибо за помощь, но как это работает с JS? – RezaM

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