Отправка почты PHP с использованием Javascript

0

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

Обычно все в 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-\.]+@([\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>
Теги:

2 ответа

0
Лучший ответ
$.post($(this).attr('action'),formInput, function(

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

  • 0
    Извините, но я не знаю, что вы подразумеваете под: «Заменить это значение реальным путем»? Какое значение там принадлежит? Потому что я думал, что PHP и JS не нужно связываться друг с другом.
  • 0
    Вам нужно разместить свои данные где-нибудь, здесь ваше поле действия в форме пусто. Укажите реальный путь / файл, куда вы хотите отправить форму. Проверьте примеры здесь: api.jquery.com/jQuery.post
Показать ещё 2 комментария
0
 $mail = mail($afMail, "Contact || RASolutions", $sBericht, $headers);
 $emailSent = true;

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

Тогда, если вы попробуете 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?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню