我已经用表单完成了一个非常简单的代码,然后获取此信息,并使用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@email.com';
$mail->Password = $password;
$mail->SMTPSecure = 'tsl';
$mail->setFrom('email@email.com', 'Something');
$mail->addAddress('email@email.com');
$mail->addAddress('email@email.com');
$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;
}
这是我遇到的唯一错误:
[客户端IP]标头之前的脚本输出结束:send.php
PD:
SMTPSecure更改为tls
仍然不起作用:(
编辑
这是我遇到的错误
117.03.2019 22:04:22 [客户端] AH01215:PHP解析错误:语法错误,第3行上出现意外的'use'(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 [客户端] AH01220:超时等待CGI脚本输出
17.03.2019 22:05:14 [客户端] AH00574:ap_content_length_filter:apr_bucket_read()失败
更新
我将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
实际代码:
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;
}
我的文件:
(我正在启动send2.php,因为它使用的是最新版本的phpmailer [该文件夹位于phpmailer2])
当我执行代码时,我会在屏幕上看到它:
2019-03-20 13:57:54连接:打开smtp.gmail.com:587,超时= 300,options = array()
我进入托管面板,然后我看到了
20.03.2019 14:55:04 my.website [客户端80.38.90.0] AH01215:PHP警告:使用未定义的常量\ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99-假定为'\ xe2 \ x80 \ x98display_errors \ xe2 \ x80 \ x99'(第2行:my.route / send2.php)中的my.route / send2.php中(这将在以后的PHP版本中引发错误)
20.03.2019 14:55:44 my.website [客户端80.38.90.0] AH01220:等待CGI脚本my.route / send2.php输出的超时
20.03.2019 14:55:44 my.website [客户端80.38.90.0] AH00574:ap_content_length_filter:apr_bucket_read()失败
答案 0 :(得分:0)
ap_content_length_filter: apr_bucket_read() failed
似乎是这里的相关错误。
似乎最可能的罪魁祸首是Apache超时(来源:https://stackoverflow.com/a/38711063/5505001),您应该询问您的网络托管服务商是否允许您临时更改Apache超时,以查看这是否是真正的问题。
答案 1 :(得分: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将我使用的单引号更改为大括号了;改回来。