0

この質問が何度も聞かれたことは知っていますが、私に固有の答えを見つけることができませんでした。

お問い合わせフォームは完全に正常に検証されているようです。適切なデータを入力して[メッセージを送信]ボタンをクリックすると、メッセージが実際に送信されたことを示すメッセージが表示されます。画面にエラーメッセージは表示されません。

私のHTMLコードは次のようになります。

<form action="send.php" id="contact_form" method="post" name="contact_form">
  <ul>
    <li>
      <label>NAME <span class="required">*</span></label>
      <input type="text" name="name" id="name" value="" class="requiredField" />
    </li>
    <li>
      <label>EMAIL <span class="required">*</span></label>
      <input type="text" name="email" id="email" value="" class="requiredField email" />
    </li>
    <li class="textarea">
      <label>MESSAGE <span class="required">*</span></label>
      <textarea name="message" id="message" rows="20" cols="30" class="requiredField"></textarea>
    </li>
    <li class="button_form">
      <input name="submitted" id="submitted" value="Send Message" class="submit" type="submit" />
      <input id="reset" type="reset" value="Reset Form" class="submit" />
    </li>
  </ul>
</form>
<script type="text/javascript">
  //<![CDATA[
  $(document).ready(function(){
    $("#form").validate();
  });
  //]]>

私のJSは次のようになります。

$(document).ready(function() {
  $('form#contact_form').submit(function() {
    $('form#contact_form .error').remove();
      var hasError = false;
      $('.requiredField').each(function() {
        if(jQuery.trim($(this).val()) == '') {
          var labelText = $(this).prev('label').text();
          $(this).parent().append('<span class="error">Please enter your '+labelText+'</span>');
          $(this).addClass('inputError');
          hasError = true;
        }
        else if($(this).hasClass('email')) {
          var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
          if(!emailReg.test(jQuery.trim($(this).val()))) {
            var labelText = $(this).prev('label').text();
    $(this).parent().append('<span class="error">Please a valid '+labelText+'</span>');
            $(this).addClass('inputError');
            hasError = true;
          }
        }
      });

      if(!hasError) {
        $('form#contact_form input.submit').fadeOut('normal', function() {
          $(this).parent().append('');
        });
        var formInput = $(this).serialize();
        $.post($(this).attr('action'),formInput, function(data){
        $('form#contact_form').slideUp("fast", function() {
      $(this).before('<p class="success">Thank you!<br/>Your email was sent successfully.<br/>I will contact you as soon as possible.</p>');
        });
      });
    }

    return false;
  });
});

私のPHPは次のよ​​うになります。

<?php 
error_reporting(E_ALL ^ E_NOTICE); // hide all basic notices from PHP

if(!isset($hasError)) {

  $emailTo = 'name@domain.com';
  $subject = 'Submitted message from '.$name;
  $sendCopy = trim($_POST['sendCopy']);
  $body = "Name: $name \n\nEmail: $email \n\nComments: $comments";
  $headers = 'From: ' .' <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;

  mail($emailTo, $subject, $body, $headers);


  $emailSent = true;
}
}
?>

コードに何かが欠けていますか?どんな助けでも大歓迎です!

4

1 に答える 1

0

サーバーで使用されている電子メール システムは何ですか。sendmail、SMTPなどはありますか。php.iniファイルでメールポート(例:smtp_port)とsmtp IPアドレス(「localhostまたは192.168.132.1など」)などを確認したかどうかを意味します。

これらの設定に問題がある場合、メールは機能しません。sendmail よりも高速な smtp を最初に確認することをお勧めします。そのためには、Google SMTP 設定を使用できます。このリンクhttps://www.digitalocean.com/community/articles/how-to-use-google-s-smtp-serverを確認してください。

于 2013-11-08T14:38:45.297 に答える