-2

フォーム データの送信に使用している基本的な連絡先 PHP スクリプトに問題があります。問題のページ

私の PHP はかなり制限されていますが、私の構文では問題になる可能性のある明らかなものを見つけることができません。

スクリプトはいくつかの基本的なエラー チェックを行い、結果を変数 $error に格納します。

if($email && !ValidateEmail($email))
{
    $error .= 'Invalid E-mail !!!';
}

そして問題のPHP:

if(!$error)
{
$mail = mail(WEBMASTER_EMAIL, $subject, $message,
    "From: ".$name." <".$email."> \r\n"
    ."Subject: BOOKING FORM SUBMISSION \r\n"
    ."X-Mailer: PHP/".phpversion());
if($mail)
  {
    echo 'OK';
  }
  else {
    echo 'Mail called, no mail';
  }
}
else
  {
    echo '<div class="notification_error">'.$error.'</div>';
  }
}

bob@hj を電子メールとして入力すると、PHP スクリプトがこのエラーを認識し、スクリプトから「無効な電子メール」という応答が返されるので、インスペクタでページを見て、フォーム データがスクリプトに送信されていることを確認できます。データが正しく解析されていることを示しています。

エラーがない場合、応答は「メールが呼び出されましたが、メールは送信されませんでした」なので、呼び出している mail() 関数に何か問題があると思います。

同じ結果が得られるフィールドからのストレートとしてヘッダーを単純化しようとしました。

何か案は?スタックの素晴らしいコミュニティに感謝します。

スクリプトを呼び出すために使用するjqueryを含める価値があるかもしれないと考えましたが、PHPの応答「メールが呼び出されましたが、メールはありません」を考えると、問題の原因はjQueryではないと推測します..

jQuery("#booking-form").submit(function(){
            _CONTACT = jQuery(this);
            var str = _CONTACT.serialize();
            jQuery.ajax({
                   type: "POST",
                   url: "basic_booking_form/booking.php",
                   data: str,
                   success: function(msg){
                        jQuery(document).ajaxComplete(function(event, request, settings){
                            if(msg == 'OK') {
                                result = '<div class="notification_ok">Your message has been sent Succesfully. Thank you.</div>';
                                jQuery("#fields").hide();
                                _CONTACT.hide();
                                _CONTACT.html(result).slideDown("slow");
                                _CONTACT.html(result);
                            }
                            else {
                                result = msg;
                                _CONTACT.find('#note').html(result).slideDown("slow");
                            }
                        });
                    }
                });
            return false;
            });
4

1 に答える 1

-2

更新 これに参加して助けようとしていたすべての人に感謝します.「SwiftMail」を使用すると、はるかに優れたソリューションが機能することを嬉しく思います. これらの一般的な PHP コンタクト フォームのチュートリアルに手を出している場合は、使用することを強くお勧めします。実装は簡単で、今では PHP の mail() 関数ではなく、独自のメール サーバーの smtp 設定を使用してメールを送信しています。

結果のPHPコード(ファイル構造にswiftmailを含めた後):

<?php

require_once '../swift_mail/lib/swift_required.php';

include 'config.php';
  error_reporting (E_ALL ^ E_NOTICE);
  $post = (!empty($_POST)) ? true : false;

if($post)
{
  include 'functions.php';
  $name = stripslashes($_POST['name']);
  $apartment = trim($_POST['apartment']);
  $email = trim($_POST['email']);
  $tel = trim($_POST['tel']);
  $mob = trim($_POST['mob']);
  $arrive = trim($_POST['arrive']);
  $depart = trim($_POST['depart']);
  $guests = trim($_POST['guests']);
  $guests13 = trim($_POST['guests13']);
  $accept = trim($_POST['accept']);

  $message = "Name: ".$name."\n"."Tel: ".$tel."\n"."Mobile: ".$mob."\n"."Apartment: ".$apartment."\n"."Arrive: ".$arrive."\n"."Depart: ".$depart."\n"."Guests: ".$guests."\n"."Guests under 13: ".$guests13."\n".stripslashes($_POST['message'])."\n"."Terms Accepted: ".$accept;

  $error = '';

  // Create the Transport
  $transport = Swift_SmtpTransport::newInstance('mail.******.co.uk', 26)
  ->setUsername('******')
  ->setPassword('******');
  if(!$transport) {
    $error .= 'error creating transport';
  }

  // Create the Mailer using your created Transport
  $mailer = Swift_Mailer::newInstance($transport);

  // Check name
  if(!$name)
  {
    $error .= 'You need to enter a name';
  }
  // Check email
  if(!$email)
  {
    $error .= 'Please enter a valid e-mail. It will not be stored or added to any mailing list.';
  }
  if($email && !ValidateEmail($email))
  {
    $error .= 'Invalid E-mail !!!';
  }
  if(!$accept)
  {
    $error .= 'You must accept the terms and conditions to make a reservation.';
  }
  if(!$error)
  {
    $mail_to_send = Swift_Message::newInstance()
    // Give the message a subject
    ->setSubject('Booking Form Submission')
    // Set the From address with an associative array
    ->setFrom(array($email => $name))
    ->setReplyTo($email)
    // Set the To addresses with an associative array
    ->setTo(WEBMASTER_EMAIL)
    // Give it a body
    ->setBody($message);

    // Send the message
    $result = $mailer->send($mail_to_send);
    if($result) {
      echo 'OK';
    } 
    else {
      echo 'mailer not successful';
    }
  }
  else
  {
    echo '<pre>
    <div class="notification_error">'.$error.'</div>
    </pre>';
  }
}
?>
于 2013-11-11T17:25:23.640 に答える