在 Fedora 上使用 PEAR

Use PEAR on Fedora

我正在尝试使用 PEAR 在 Fedora 服务器计算机上发送电子邮件,但没有成功。

下面是我正在尝试使用的代码。代码中的电子邮件身份验证设置不是实际的,但我使用的信息是从我的电子邮件客户端配置中提取的,因此应该可以工作。

我也在尝试获取调试信息以了解发生了什么。将 'debug' 设置为 'true' 就足够了还是需要其他东西?我在哪里可以找到调试日志信息?

很多问题,但我希望有人能指导我正确的方向。

我也试过 PHPMailer,但不行。我觉得机器上的某些配置正在阻塞...

还有一件事,这个确切的代码可以在 Ubuntu 机器上运行,所以我知道它可以运行。我正在尝试将所有服务从 Ubuntu 机器转移到 Fedora 机器。

<?php

require_once "Mail.php";

$from = "demo@demo.com";
$recipients = 'demo@demo.com';
$headers["From"] = $from;
$headers["To"] = 'demo@demo.com';
$headers["Reply-To"] = $from;
$headers["Subject"] = 'Testing';
$headers["MIME-Version"] = "1.0";
$headers["Content-Type"] = "text/html; charset=UTF-8";

$body = 'Testing';

$smtpinfo["host"] = "mail.demo.com";
$smtpinfo["port"] = "587";
$smtpinfo["auth"] = true;
$smtpinfo["username"] = "demo@demo.com";
$smtpinfo["password"] = "password";
$smtpinfo["debug"] = true;

$mail_object = Mail::factory("smtp", $smtpinfo);
$mail_object->send($recipients, $headers, $body);

if (PEAR::isError($mail_object)) {
    $ret['success'] = false;
    $ret['msg'] = 'Message delivery failed...';
} else {
    $ret['success'] = true;
    $ret['msg'] = 'data is valid';
}

return $ret;

?>

谢谢

所以,经过几个小时的测试,我已经解决了这个问题。此 website 提供了有关如何在命令行中获取调试信息的指导。

在命令行测试 PHP 代码并确认可以发送消息后,我尝试从网页发送电子邮件;失败了。

所以,现在我认为这个问题可能与网络服务器有关,所以我在 Stack Overflow 上看到了这个 question。其解决方案立即解决了问题。具体来说,按照已接受的解决方案中的描述执行以下操作:

$ sestatus -b | grep sendmail
httpd_can_sendmail    off

$ restorecon /usr/bin/sendmail
$ setsebool -P httpd_can_sendmail 1

希望这对面临某些问题的其他人有所帮助。