PHPMailer在标题之前结束脚本

问题描述 投票:0回答:2

我已经用表单完成了一个非常简单的代码,然后使用PHPMailer和G-suite获取此信息并发送和发送电子邮件。我在xampp上运行此代码,一切正常。它正在运行。但是,当我把它移动到我的主机不运行...

PD:我已经读过这个错误,它可能是关于文件权限,但我已经尝试了所有...将所有文件设置为755,最后我尝试将其设置为777并仍然无法正常工作...

我与托管服务提供商有联系并说他们可以帮我解决这个个人问题:/

这是我的PHP代码:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'phpmailer/src/Exception.php';
require 'phpmailer/src/PHPMailer.php';
require 'phpmailer/src/SMTP.php';

$name="test";
$phone="test";
$email="test";

$mail = new PHPMailer(true);  
try {

$password = 'PASSWD';

$mail->SMTPDebug = 2; 
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com'; 
$mail->Port = 587;
$mail->SMTPAuth = true; 
$mail->Username = '[email protected]'; 
$mail->Password = $password;
$mail->SMTPSecure = 'tsl'; 


$mail->setFrom('[email protected]', 'Something');
$mail->addAddress('[email protected]');
$mail->addAddress('[email protected]'); 
$mail->isHTML(true);
$mail->Subject = 'New lead';
$mail->Body = 'Name: '.$name.'<br>Email: '.$email.'<br>Phone: '.$phone;


$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}

这是我得到的唯一错误:

[client IP]标题前的脚本输出结束:send.php

PD:

SMTPSecure已更改为tls

还是行不通 :(

编辑 这是我得到的错误

117.03.2019 22:04:22 [客户端] AH01215:PHP解析错误:语法错误,第3行意外“使用”(T_USE):

17.03.2019 22:04:34 [客户端] AH01215:PHP警告:使用未定义的常量\ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99 - 假设'\ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99'(这个将在第2行将在PHP的未来版本中引发错误:

17.03.2019 22:05:14 [client] AH01220:超时等待CGI脚本的输出

17.03.2019 22:05:14 [client] AH00574:ap_content_length_filter:apr_bucket_read()失败

UPDATE

我将php更新为7.3.2。 PHPMailer是6.0.7版本。我得到的唯一不同的错误是这一个......

PHP警告:使用未定义的常量\ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99 - 假定'\ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99'(这将在未来的PHP版本中引发错误)/第2行的mnt / web401 / c2 / 79/59742679 / url:/ home / strato / http / power / rid / 26/79 / 59742679 / url

更新2

  • PHP 7.3.2
  • PHPMailer 6.0.7
  • Gsuite
  • 在XAMPP上测试并且实际上正在工作
  • 托管在图层上

实际代码:

ini_set('display_errors', true);
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'phpmailer2/src/Exception.php';
require 'phpmailer2/src/PHPMailer.php';
require 'phpmailer2/src/SMTP.php';

$name="test";
$phone="test";
$email="test";

$mail = new PHPMailer(true);  
try {

$password = 'mypassword';

    $mail->SMTPDebug = 3;
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;
    $mail->SMTPAuth = true;
    $mail->Username = 'myemail';
    $mail->Password = $password;
    $mail->SMTPSecure = 'tls';
    $mail->setFrom('email', 'fromemail');
    $mail->addAddress('email');
    $mail->addAddress('email');

    $mail->isHTML(true);
    $mail->Subject = 'New lead';
    $mail->Body = 'some text';


    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}

我的文件:

enter image description here

(我正在启动send2.php,因为它使用的是最后一个版本的phpmailer [这个位于phpmailer2])

当我执行代码时,我在屏幕上看到这个:

2019-03-20 13:57:54连接:打开smtp.gmail.com:587,timeout = 300,options = array()

我去我的主机面板,我只是看到这个

20.03.2019 14:55:04 my.website [client 80.38.90.0] AH01215:PHP警告:使用未定义的常量\ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99 - 假设'\ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99'(这将在PHP的未来版本中引发错误)在第2行的my.route / send2.php中:my.route / send2.php

20.03.2019 14:55:44 my.website [client 80.38.90.0] AH01220:超时等待CGI脚本my.route / send2.php的输出

20.03.2019 14:55:44 my.website [client 80.38.90.0] AH00574:ap_content_length_filter:apr_bucket_read()失败

php hosting phpmailer
2个回答
0
投票

ap_content_length_filter: apr_bucket_read() failed似乎是这里的相关错误。

看来最有可能的罪魁祸首是达到Apache超时(来源:https://stackoverflow.com/a/38711063/5505001)你应该问你的网络主机他们是否允许你暂时改变Apache超时,看看这是否真的是问题。


0
投票
PHP Parse error: syntax error, unexpected 'use'

这通常意味着您在非常旧的PHP版本上运行新版本的PHPMailer。确保你至少使用PHP 5.5,但是现在你应该只在7.3上进行新的开发。

PHP Warning: Use of undefined constant \xe2\x80\x98display_errors\xe2\x80\x99

这是一个复制和粘贴错误 - 看起来像SO改变了我用于卷曲的单引号;改回来。

© www.soinside.com 2019 - 2024. All rights reserved.