2013-04-16 2 views
0

Невозможно получить эти 3 скрипта, чтобы играть хорошо. Попытка заставить эту почтовую функцию работать и отправлять письма. Ive удалил чувствительную информацию и заменил ее на общие термины. У меня также есть другая функция php mail, которая использует preg_match и другие методы проверки, но она не работает, поэтому я решил удалить ее до тех пор, пока она не будет работать, а затем попытайтесь снова добавить сервер проверки.PHP почтовая функция не работает..с проверкой на стороне клиента

Я не так хорош на PHP, но я не могу обернуться вокруг этого, поэтому любая помощь будет оценена по достоинству.

Обычно я тестирую все это на своем модуле, но есть живой сервер-сервер @ marinetechegypt.com/contact.php/, возможно, он не обновляется.

Ниже представлены все связанные файлы.

HTML форма (contact.php)

  <div class="col one-half"> 
      <h3> Send us an Email </h3> 
       <div class="ajax_message"></div> 
       <form class="contact-form" method="post" action="php-mailer.php"> 
        <input type="hidden" name="ac" value="login" /> 
        <p> 
         <label for="fname"> Your Name <span class="required"> * </span> </label> 
         <input type="text" name="fname" class="input-short" id="fname" placeholder="Your Full Name" /> 
         <?php if(isset($errName1)) echo $errName1; ?> 
        </p> 
        <p> 
         <label for="email"> Your Email <span class="required"> * </span> </label> 
         <input type="text" name="email" class="input-long" id="email" placeholder="Your Email" /> 
         <?php if(isset($errEmail)) echo $errEmail; ?> 
        </p> 
        <p> 
         <label> Subject </label> 
         <input name="subject" type="text" id="subject" class="input-short" placeholder="Subject"/> 
        </p> 
        <p> 
         <label for="message"> Your Message <span class="required"> * </span> </label> 
         <textarea name="message" class="textarea-message" id="textarea" placeholder="Your Message"></textarea> 
         <?php if(isset($errMessage)) echo $errMessage; ?> 
        </p> 
        <p><input name="submit" type="submit" value="Send Message" class="button small grey contact-submit" /></p> 
      </form> 
      <div class="error-container" style="display:none;"> Please fill the above required fields correctly! </div> 
     </div> 

PHP-mailer.php файл:

<?php 
if(isset($_POST['submit'])) { 
     $to = "RecipientEmailInbox"; 
     $subject = $_POST['subject']; 
     $first_name_field = $_POST['fname']; 
     $email_field = $_POST['email']; 
     $message = $_POST['textarea']; 
     $message = " 
     Name: $first_name_field 
     Email: $email_field 
     Message: $message"; 
     $headers = 'MIME-Version: 1.0' . "\r\n"; 
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

     // Additional headers 
    $headers .= 'To: <RecipientEmailInbox>' . "\r\n"; 
    $headers .= '[From] <SenderEmailInbox>' . "\r\n"; 

// Mail it 
mail($to, $subject, $message, $headers); 
include("OnCompleteURL"); 
ini_set("sendmail_from","EmailHeaderFrom"); 
ini_set("SMTP","SMTPAddress"); 
mail($to, $subject, $message, $headers); 
     } else { 
       echo "Error phpmailer"; 
      } 
?> 

JS на стороне клиента Валидация

$(document).ready(function(){ 

$.validator.addMethod("notEqual", function(value, element, param) { 
    return this.optional(element) || value != param; 
}, "Please choose a value!"); 


$(".contact-form").each(function(){ 
    $container = $(this).next("div.error-container"); 
    //Validate Starts 
    $(this).validate({ 
     onfocusout: function(element) { $(element).valid(); }, 
     errorContainer: $container, 
     rules:{ 
      fname:{required:true,minlength:3,notEqual:'Your Full Name'}, 
      email:{required:true,email:true,notEqual:'Your Email'}, 
      subject:{notEqual:'Subject'}, 
      message:{notEqual:'Your Message'} 

      ,message:{required:true,minlength:10} 
     } 
    });//Validate End 

    //Submit Starts   
    $(this).submit(function(e){ 
     $frm = $(this); 
     $name = $frm.find('*[name=fname]').val(); 
     $email = $frm.find('*[name=email]').val(); 
     $subject = $frm.find('*[name=subject]').val(); 
     $message = $frm.find('*[name=message]').val(); 

     if($frm.find('*[name=fname]').is('.valid') && $frm.find('*[name=email]').is('.valid')) { 
      var action = $frm.attr('action'); 
      $frm.find('*[name=submit]').attr('disabled', 'disabled').after(''); 

      $frm.prev(".ajax_message").slideUp(750, function() { 
       $ajax_container = $(this); 
       $ajax_container.hide(); 

       $.post(action, { 
        name: $name, 
        email: $email, 
        subject: $subject, 
        message: $message 
        }, function (data) { 
         $ajax_container.html(data); 
         $ajax_container.slideDown('slow'); 
         $frm.find('*[name=submit]').attr('disabled', ''); 
         if (data.match('success') != null) $frm.slideUp('slow'); 
        }); 
       }); 
     } 
    e.preventDefault(); 
    }); 
}); 

});

+0

В чем вопрос? Что не работает? –

+0

Если вы тестируете WAMP, функции почты могут не работать, поскольку у вас, вероятно, нет локального почтового сервера. Где вы это тестируете? – AgilE

+0

У вас есть ошибка? –

ответ

0

Вы ничего не делаете с ini_set функций, вы должны поместить действительные электронные письма и действительные данные в него:

ini_set('SMTP' , 'smtp.yoursite.com'); 
ini_set('smtp_port' , '25'); 
ini_set('username' , '[email protected]'); 
ini_set('password' , 'password'); 
ini_set('sendmail_from' , '[email protected]'); 

Кроме того, он не имеет смысла, что вы посылаете электронную почту, прежде чем вы установите эти параметры.

Вы делаете почту дважды, до и после настроек. Определите настройки и затем отправьте электронное письмо.

Кстати,

this 
won't 
get a new line 

Вы должны добавить \ п в текст, если вы не используете оболочку, которая может справиться с этой работой.

+0

Спасибо за отзыв, я удалил дополнительную функцию mail() и добавил ini_set код, а затем функцию mail(). Правильно ли выглядит синтаксис? Можете ли уточнить, где я не хватает/n для новых строк? вы можете видеть все в действии @ marinetechegypt.com/contact.php – TheSabz

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