我正在尝试使用PEAR在Fedora服务器上发送电子邮件而且无处可去。
以下是我尝试使用的代码。代码中的电子邮件身份验证设置不是实际的,但我使用的信息是从我的电子邮件客户端配置中提取的,因此应该可以使用。
我也在尝试获取调试信息以了解发生了什么。正在设置' debug'真的'足够或是否需要其他东西?我在哪里可以找到调试日志信息?
很多人要求,但我希望有人能指引我朝着正确的方向前进。
我也试过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;
?>
谢谢
答案 0 :(得分:1)
因此,经过几个小时的测试后,我已经解决了这个问题。这个website提供了如何在命令行中获取调试信息的方向。
从命令行测试PHP代码并确认可以发送消息后,我尝试从网页发送电子邮件;没能奏效。
所以,现在认为这个问题可能与Web服务器有关,让我在Stack Overflow上找到了这个question。其解决方案立即解决了问题。具体而言,按照公认的解决方案中的描述执行以下操作:
$ sestatus -b | grep sendmail
httpd_can_sendmail off
$ restorecon /usr/bin/sendmail
$ setsebool -P httpd_can_sendmail 1
希望这有助于其他人面对某些问题。