我已经用表单完成了一个非常简单的代码,然后使用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
实际代码:
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,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()失败
ap_content_length_filter: apr_bucket_read() failed
似乎是这里的相关错误。
看来最有可能的罪魁祸首是达到Apache超时(来源:https://stackoverflow.com/a/38711063/5505001)你应该问你的网络主机他们是否允许你暂时改变Apache超时,看看这是否真的是问题。
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改变了我用于卷曲的单引号;改回来。