Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript xmlhttprequest不';无法与phpmailer$mail配合使用->;发送()_Javascript_Php_Ajax_Phpmailer - Fatal编程技术网

Javascript xmlhttprequest不';无法与phpmailer$mail配合使用->;发送()

Javascript xmlhttprequest不';无法与phpmailer$mail配合使用->;发送(),javascript,php,ajax,phpmailer,Javascript,Php,Ajax,Phpmailer,我正在尝试使用javascript中的XMLHttpRequestAPI并通过phpMail设置自动电子邮件发送功能。电子邮件发送成功。但是,php响应无法发送回xmlhttprequest的onreadystatechange事件。通过对流程的调试,xhr.readystate的值是1,然后是2,流程完成时没有任何错误或警报。请参阅以下代码: 带有xmlhttprequest的js代码: var xhr = new XMLHttpRequest(); // Usual mix-and-ma

我正在尝试使用javascript中的XMLHttpRequestAPI并通过phpMail设置自动电子邮件发送功能。电子邮件发送成功。但是,php响应无法发送回xmlhttprequest的onreadystatechange事件。通过对流程的调试,xhr.readystate的值是1,然后是2,流程完成时没有任何错误或警报。请参阅以下代码: 带有xmlhttprequest的js代码:

  var xhr = new XMLHttpRequest(); // Usual mix-and-matching for x-browser omitted for brevity
                        var senddata = 'problem=' + dom.byId("sProblem").value + '&name=' + dom.byId("sName").value + '&email=' + dom.byId("sEmail").value + '&phone=' + dom.byId("sPhone").value
                                       + '&streets=' + dom.byId("sStreets").value + '&comments=' + dom.byId("sComments").value;

                        xhr.onreadystatechange = function () {

                            if (xhr.readyState == 4 && xhr.status == 200) {                            
                                alert("Thank you for sending email ");                      
                            }
                        }

                         xhr.open('POST', 'Scripts/app/php/report.php', true);
                        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                        xhr.send(senddata);
我的php文件非常简单:

<?php
require __DIR__ . "/../../../../../phpmailer/PHPMailerAutoload.php";


$problem = $_POST["problem"];
$name = $_POST["name"];
$email  = $_POST["email"];
$phone = $_POST["phone"];
$streets = $_POST["streets"];
$comments = $_POST["comments"];

$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.office365.com';
$mail->Port       = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth   = true;
$mail->Username = 'xxx@xxx.net';
$mail->Password = 'xxx';
$mail->SetFrom('xxx@xxx.net', 'FromEmail');
$mail->addAddress('xxx@xxx.org', 'ToEmail');
$mail->IsHTML(true);

$mail->Subject = 'It is a test from Jing';
$mail->Body =  "Report a problem form from the KCRC website:"."<br>";
$mail->Body .= "Problem: $problem"."<br>";
$mail->Body .= "Name: $name"."<br>";
$mail->Body .= "E-mail: $email"."<br>";
$mail->Body .= "Phone: $phone"."<br>";
$mail->Body .= "Streets: $streets"."<br>";
$mail->Body .= "Comments: $comments"."<br>";


$mail->AltBody =  "Report a problem form from the KCRC website:"."<br>";
$mail->AltBody .= "Problem: $problem"."<br>";
$mail->AltBody .= "Name: $name"."<br>";
$mail->AltBody .= "E-mail: $email"."<br>";
$mail->AltBody .= "Phone: $phone"."<br>";
$mail->AltBody .= "Streets: $streets"."<br>";
$mail->AltBody .= "Comments: $comments"."<br>";

if(!$mail->send()) { 
  echo "Mail sending failed."; 
}else{
  echo "Thank you for using our mail form";
}
我可以得到这个提醒:提醒(“谢谢你发送电子邮件”)
但如果我取消注释,则会发送电子邮件,但不会发出警报(readystate永远不会达到4)。我需要提醒用户他们的电子邮件已发送

如果我只运行php文件,我看不到任何错误:下面是我将调试级别设置为2时php页面的结果:

debug level 2; message: SERVER -> CLIENT: 220     CY4PR16CA0044.outlook.office365.com Microsoft ESMTP MAIL Service ready at Mon, 20 Mar 2017 12:46:59 +0000 debug level 2; message: CLIENT -> SERVER: EHLO localhost debug level 2; message: SERVER -> CLIENT: 250-CY4PR16CA0044.outlook.office365.com Hello [96.61.212.2] 250-SIZE 157286400 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-STARTTLS 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250 SMTPUTF8 debug level 2; message: CLIENT -> SERVER: STARTTLS debug level 2; message: SERVER -> CLIENT: 220 2.0.0 SMTP server ready debug level 2; message: CLIENT -> SERVER: EHLO localhost debug level 2; message: SERVER -> CLIENT: 250-CY4PR16CA0044.outlook.office365.com Hello [96.61.212.2] 250-SIZE 157286400 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-AUTH LOGIN 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250 SMTPUTF8 debug level 2; message: CLIENT -> SERVER: AUTH LOGIN debug level 2; message: SERVER -> CLIENT: 334 VXNlcm5hbWU6 debug level 2; message: CLIENT -> SERVER: d2ViZm9ybXN1Ym1pdEBrZW50Y291bnR5cm9hZHMubmV0 debug level 2; message: SERVER -> CLIENT: 334 UGFzc3dvcmQ6 debug level 2; message: CLIENT -> SERVER: eDd1Vyd5LmA/Xw== debug level 2; message: SERVER -> CLIENT: 235 2.7.0 Authentication successful target host BL2PR14MB0929.namprd14.prod.outlook.com debug level 2; message: CLIENT -> SERVER: MAIL FROM: debug level 2; message: SERVER -> CLIENT: 250 2.1.0 Sender OK debug level 2; message: CLIENT -> SERVER: RCPT TO: debug level 2; message: SERVER -> CLIENT: 250 2.1.5 Recipient OK debug level 2; message: CLIENT -> SERVER: DATA debug level 2; message: SERVER -> CLIENT: 354 Start mail input; end with . debug level 2; message: CLIENT -> SERVER: Date: Mon, 20 Mar 2017 08:46:59 -0400 debug level 2; message: CLIENT -> SERVER: To: ToEmail  debug level 2; message: CLIENT -> SERVER: From: FromEmail  debug level 2; message: CLIENT -> SERVER: Subject: It is a test from Jing debug level 2; message: CLIENT -> SERVER: Message-ID: <2e72266fdeacea641e142a9ffab0a19c@localhost> debug level 2; message: CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.15 (https://github.com/PHPMailer/PHPMailer) debug level 2; message: CLIENT -> SERVER: MIME-Version: 1.0 debug level 2; message: CLIENT -> SERVER: Content-Type: multipart/alternative; debug level 2; message: CLIENT -> SERVER: boundary="b1_2e72266fdeacea641e142a9ffab0a19c" debug level 2; message: CLIENT -> SERVER: Content-Transfer-Encoding: 8bit debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: This is a multi-part message in MIME format. debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: --b1_2e72266fdeacea641e142a9ffab0a19c debug level 2; message: CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: Report a problem form from the KCRC website:
Problem: 
Name: 
E-mail: 
Phone: 
Streets: 
Comments: 
debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: --b1_2e72266fdeacea641e142a9ffab0a19c debug level 2; message: CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: Report a problem form from the KCRC website:
Problem: 
Name: 
E-mail: 
Phone: 
Streets: 
Comments: 
debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: --b1_2e72266fdeacea641e142a9ffab0a19c-- debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: . debug level 2; message: SERVER -> CLIENT: 250 2.6.0 <2e72266fdeacea641e142a9ffab0a19c@localhost> [InternalId=32800665241380, Hostname=BL2PR14MB0929.namprd14.prod.outlook.com] 3051 bytes in 0.544, 5.468 KB/sec Queued mail for delivery debug level 2; message: CLIENT -> SERVER: QUIT debug level 2; message: SERVER -> CLIENT: 221 2.0.0 Service closing transmission     channel Thank you for using our mail form 
调试级别2;消息:服务器->客户端:220 CY4PR16CA0044.outlook.office365.com Microsoft ESMTP邮件服务于2017年3月20日星期一12:46:59+0000调试级别2准备就绪;消息:客户端->服务器:EHLO本地主机调试级别2;消息:服务器->客户端:250-CY4PR16CA0044.outlook.office365.com你好[96.61.212.2]250-SIZE 157286400 250-pipelling 250-DSN 250-ENHANCEDSTATUSCODES 250-STARTTLS 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250-SMTPUTF8调试级别2;消息:CLIENT->SERVER:STARTTLS调试级别2;消息:服务器->客户端:220 2.0.0 SMTP服务器就绪调试级别2;消息:客户端->服务器:EHLO本地主机调试级别2;消息:服务器->客户端:250-CY4PR16CA0044.outlook.office365.com你好[96.61.212.2]250-SIZE 157286400 250-Pipelling 250-DSN 250-ENHANCEDSTATUSCODES 250-AUTH登录250-8BITMIME 250-BINARYMIME 250-CHUNKING 250-SMTPUTF8调试级别2;消息:客户端->服务器:身份验证登录调试级别2;消息:服务器->客户端:334 VXNlcm5hbWU6调试级别2;消息:CLIENT->SERVER:d2ViZm9ybXN1Ym1pdEBrZW50Y291bnR5cm9hZHMubmV0调试级别2;消息:服务器->客户端:334 UGFzc3dvcmQ6调试级别2;消息:客户端->服务器:eDd1Vyd5LmA/Xw==调试级别2;消息:服务器->客户端:235 2.7.0身份验证成功目标主机BL2PR14MB0929.namprd14.prod.outlook.com调试级别2;消息:客户端->服务器:邮件发件人:调试级别2;消息:服务器->客户端:250 2.1.0发送方确定调试级别2;消息:CLIENT->SERVER:RCPT TO:debug level 2;消息:服务器->客户端:250 2.1.5收件人确定调试级别2;消息:客户端->服务器:数据调试级别2;消息:服务器->客户端:354开始邮件输入;以…结束。调试级别2;消息:客户端->服务器:日期:2017年3月20日星期一08:46:59-0400调试级别2;消息:客户端->服务器:收件人:ToEmail调试级别2;消息:客户端->服务器:发件人:发件人电子邮件调试级别2;message:CLIENT->SERVER:Subject:这是来自Jing调试级别2的测试;消息:客户端->服务器:消息ID:调试级别2;消息:客户端->服务器:X-Mailer:PHPMailer 5.2.15(https://github.com/PHPMailer/PHPMailer)调试级别2;消息:客户端->服务器:MIME版本:1.0调试级别2;消息:客户端->服务器:内容类型:多部分/可选;调试级别2;消息:客户端->服务器:boundary=“b1_2E72266FDEA641E142A9FFAB0A19C”调试级别2;消息:客户端->服务器:内容传输编码:8位调试级别2;消息:客户端->服务器:调试级别2;消息:客户端->服务器:这是MIME格式的多部分消息。调试级别2;消息:客户端->服务器:调试级别2;消息:客户端->服务器--b1_2E72266FDEA641E142A9FFAB0A19C调试级别2;消息:客户端->服务器:内容类型:文本/普通;字符集=us ascii调试级别2;消息:客户端->服务器:调试级别2;信息:客户端->服务器:从九广铁路公司网站报告问题表格:
问题:
姓名:
电邮:
电话:
街道:
评论:
调试级别2;消息:客户端->服务器:调试级别2;消息:客户端->服务器:调试级别2;消息:客户端->服务器--b1_2E72266FDEA641E142A9FFAB0A19C调试级别2;消息:客户端->服务器:内容类型:text/html;字符集=us ascii调试级别2;消息:客户端->服务器:调试级别2;信息:客户端->服务器:从九广铁路公司网站报告问题表格:
问题:
姓名:
电邮:
电话:
街道:
评论:
调试级别2;消息:客户端->服务器:调试级别2;消息:客户端->服务器:调试级别2;消息:客户端->服务器:调试级别2;消息:客户端->服务器--b1_2E72266FDEA641E142A9FFAB0A19C--调试级别2;消息:客户端->服务器:调试级别2;消息:客户端->服务器:。调试级别2;消息:服务器->客户端:250 2.6.0[InternalId=32800665241380,主机名=BL2PR14MB0929.namprd14.prod.outlook.com]3051字节,以0.544、5.468 KB/秒的速度排队发送调试级别2的邮件;消息:客户端->服务器:退出调试级别2;信息:服务器->客户端:221 2.0.0服务关闭传输通道感谢您使用我们的邮件表单
我已将phpmailer更新为5.2.23版


感谢您的帮助

这些echo语句将阻止正确解释XHR响应;仅保留echo“邮件发送成功”,并成功获得响应。因此,在这一点上,我假设$mail->send()阻止响应somehowNo,send不会对响应执行任何操作,除非您有某种错误-单独测试PHP部分,确保脚本正确运行,并且在使用XHR之前响应正确。它似乎通过了结果:没有启用调试,我收到回音了 “感谢您使用我们的邮件表格”。我还通过将其设置为级别3启用了调试。请在下面的帖子中看到结果
debug level 2; message: SERVER -> CLIENT: 220     CY4PR16CA0044.outlook.office365.com Microsoft ESMTP MAIL Service ready at Mon, 20 Mar 2017 12:46:59 +0000 debug level 2; message: CLIENT -> SERVER: EHLO localhost debug level 2; message: SERVER -> CLIENT: 250-CY4PR16CA0044.outlook.office365.com Hello [96.61.212.2] 250-SIZE 157286400 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-STARTTLS 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250 SMTPUTF8 debug level 2; message: CLIENT -> SERVER: STARTTLS debug level 2; message: SERVER -> CLIENT: 220 2.0.0 SMTP server ready debug level 2; message: CLIENT -> SERVER: EHLO localhost debug level 2; message: SERVER -> CLIENT: 250-CY4PR16CA0044.outlook.office365.com Hello [96.61.212.2] 250-SIZE 157286400 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-AUTH LOGIN 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250 SMTPUTF8 debug level 2; message: CLIENT -> SERVER: AUTH LOGIN debug level 2; message: SERVER -> CLIENT: 334 VXNlcm5hbWU6 debug level 2; message: CLIENT -> SERVER: d2ViZm9ybXN1Ym1pdEBrZW50Y291bnR5cm9hZHMubmV0 debug level 2; message: SERVER -> CLIENT: 334 UGFzc3dvcmQ6 debug level 2; message: CLIENT -> SERVER: eDd1Vyd5LmA/Xw== debug level 2; message: SERVER -> CLIENT: 235 2.7.0 Authentication successful target host BL2PR14MB0929.namprd14.prod.outlook.com debug level 2; message: CLIENT -> SERVER: MAIL FROM: debug level 2; message: SERVER -> CLIENT: 250 2.1.0 Sender OK debug level 2; message: CLIENT -> SERVER: RCPT TO: debug level 2; message: SERVER -> CLIENT: 250 2.1.5 Recipient OK debug level 2; message: CLIENT -> SERVER: DATA debug level 2; message: SERVER -> CLIENT: 354 Start mail input; end with . debug level 2; message: CLIENT -> SERVER: Date: Mon, 20 Mar 2017 08:46:59 -0400 debug level 2; message: CLIENT -> SERVER: To: ToEmail  debug level 2; message: CLIENT -> SERVER: From: FromEmail  debug level 2; message: CLIENT -> SERVER: Subject: It is a test from Jing debug level 2; message: CLIENT -> SERVER: Message-ID: <2e72266fdeacea641e142a9ffab0a19c@localhost> debug level 2; message: CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.15 (https://github.com/PHPMailer/PHPMailer) debug level 2; message: CLIENT -> SERVER: MIME-Version: 1.0 debug level 2; message: CLIENT -> SERVER: Content-Type: multipart/alternative; debug level 2; message: CLIENT -> SERVER: boundary="b1_2e72266fdeacea641e142a9ffab0a19c" debug level 2; message: CLIENT -> SERVER: Content-Transfer-Encoding: 8bit debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: This is a multi-part message in MIME format. debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: --b1_2e72266fdeacea641e142a9ffab0a19c debug level 2; message: CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: Report a problem form from the KCRC website:
Problem: 
Name: 
E-mail: 
Phone: 
Streets: 
Comments: 
debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: --b1_2e72266fdeacea641e142a9ffab0a19c debug level 2; message: CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: Report a problem form from the KCRC website:
Problem: 
Name: 
E-mail: 
Phone: 
Streets: 
Comments: 
debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: --b1_2e72266fdeacea641e142a9ffab0a19c-- debug level 2; message: CLIENT -> SERVER: debug level 2; message: CLIENT -> SERVER: . debug level 2; message: SERVER -> CLIENT: 250 2.6.0 <2e72266fdeacea641e142a9ffab0a19c@localhost> [InternalId=32800665241380, Hostname=BL2PR14MB0929.namprd14.prod.outlook.com] 3051 bytes in 0.544, 5.468 KB/sec Queued mail for delivery debug level 2; message: CLIENT -> SERVER: QUIT debug level 2; message: SERVER -> CLIENT: 221 2.0.0 Service closing transmission     channel Thank you for using our mail form