2016-09-17 8 views
0

注:私は他の質問を読んでいて、助けにはなりませんでした。PHPMailerとAJAXがリンクしていない場合

私はlocalhostでajaxとPHPMailerを使って最初にテストしました。私は電子メールを受け取ったときに完全に機能し、ajaxを使用して電子メールが送信されたと言いました。

ライブサイトにアップロードしたときに動作を停止しました。そして、私はAJAXを取り除き、それをPHPページとして置くだけで、接続がしっかりしていると確信しています。しかし、AJAXとその外部ファイルは、それが(ライブウェブサイト上で)していない場合

ここでは、AJAXコード:

<script> 
    var ajax = { 
     isSubmiting: false, 
     send: function() { 

      if(ajax.isSubmiting == false) { 
       ajax.isSubmiting = true; 

       var userName = $("input[name=name]").val(); 
       var userEmail = $("input[name=email]").val(); 
       var userComments = $("textarea").val(); 
       var currentBusiness = $("input[name=business").val(); 
       var currentWebsite = $("input[name=website]").val(); 

        ajax.SetText("Sending..."); 
        $.post("sendmail.php", { 
         name: userName, email: userEmail, comments: userComments, business: currentBusiness, website: currentWebsite 
        }, function(data) { 
         if(data == "true") { 

          ajax.SetText("Sent!"); 

          $.get("sent.html", function(sentData){ 

           $("#content").html(sentData); 

          }); 

         } else { 
          ajax.SetText("Send mail"); 

          $.get("unsent.html", function(sentData){ 

           $("#content").html(sentData); 

          }); 

          console.log(); 
         } 

         ajax.isSubmiting = false; 
        }); 

      } 
      else alert("You can only send 1 email at a time"); 
     }, 
     SetText: function(text) { 
      $("input[type=button]").val(text); 
     } 
    } 
</script> 

そして、ここではphpmailerのスクリプト(sendmail.php)であります

<?php 

    $result = ""; 
    $error = ""; 

    if(count($_POST) > 0) { 

      $message= 
      'Full Name: '.$_POST['name'].'<br /> 
      Email: '.$_POST['email'].'<br /> 
      Message: '.$_POST['comments'].'<br /> 
      Current Website: '.$_POST['website'].'<br /> 
      Business Name: '.$_POST['business'].'<br /> 
      '; 

      include "phpmailer/class.smtp.php"; 
      include("includes/class.phpmailer.php"); 

      $mail = new PHPMailer(); 
      //Tell PHPMailer to use SMTP 
      $mail->isSMTP(); 
      //Enable SMTP debugging 
      // 0 = off (for production use) 
      // 1 = client messages 
      // 2 = client and server messages 
      $mail->Host = localhost; 
      //Set who the message is to be sent from 
      $mail->setFrom('[email protected]', 'Coherent'); 
      //Set an alternative reply-to address 
      //$mail->addReplyTo('[email protected]', 'First Last'); 
      //Set who the message is to be sent to 
      $mail->addAddress('[email protected]', 'Coherent'); 
      //Set the subject line 
      $mail->Subject = 'Contact Form'; 
      //Read an HTML message body from an external file, convert referenced images to embedded, 
      //convert HTML into a basic plain-text alternative body 
      $mail->MsgHTML($message); 
      //Replace the plain text body with one created manually 
      $mail->AltBody = 'This is a plain-text message body'; 

      if (!$mail->send()) { 
       die("There was an error sending the email."); 
      } else { 
       die("true");  
      } 


     } 

?> 

誰にも言わない理由は何ですか?これを繰り返すだけで、ajaxを持たない単一のPHPページとそのスクリプトは、ライブサーバーとローカルサーバーで正常に動作します。しかし、私はそれを外部ファイルに入れ、AJAXとリンクすると、ローカルサーバーでのみ動作しますが、ライブでは動作しません。どんな答えや提案も大歓迎です。

+0

「動作しません」と定義します。かなり多くのAJAXシステムでは、JSON形式の戻り値が必要になる傾向があります。あなたはまた、PHPMailerのエラー報告機能を利用していないし、驚くことではないことを知らせることもできません。 – Synchro

+0

@シンクロ私はエラー報告を有効にしましたが、コンソールやページなどではなく、それらを正確に見ることはできません。それはその外部ファイルなのですか?そして、それは動作しません、私はそれが送信に失敗し、送信しないことを意味します。 –

+0

送信に失敗したことがわかると、エラー出力が表示されます。単純に 'die("電子メールを送信する際にエラーが発生しました。 "$ mail-> ErrorInfo);と言ってみてください。 – Synchro

答えて

0

スクリプトでは相対パスを使用しています。 Ajaxから呼び出すときは、パスが正しいものに変換されていることを確認してください。

コンソールをチェックして、Ajaxコールが正しく機能していることを確認してから、サーバーエラーログをチェックして、PHPエラーがないことを確認できます。

+0

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューより](/レビュー/低品質の投稿/ 13707260) – Jonathan

+0

ああ、確かに。システムによって報告されたエラーを得るための提案を提供していただけでした。次回は質問のコメントを使用します。 –

関連する問題