注:私は他の質問を読んでいて、助けにはなりませんでした。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とリンクすると、ローカルサーバーでのみ動作しますが、ライブでは動作しません。どんな答えや提案も大歓迎です。
「動作しません」と定義します。かなり多くのAJAXシステムでは、JSON形式の戻り値が必要になる傾向があります。あなたはまた、PHPMailerのエラー報告機能を利用していないし、驚くことではないことを知らせることもできません。 – Synchro
@シンクロ私はエラー報告を有効にしましたが、コンソールやページなどではなく、それらを正確に見ることはできません。それはその外部ファイルなのですか?そして、それは動作しません、私はそれが送信に失敗し、送信しないことを意味します。 –
送信に失敗したことがわかると、エラー出力が表示されます。単純に 'die("電子メールを送信する際にエラーが発生しました。 "$ mail-> ErrorInfo);と言ってみてください。 – Synchro