PEAR Mail - 无法连接

时间:2011-11-30 18:35:37

标签: php email pear

现在已经连续3天嘲讽我了。我安装了梨,脚本很好,因为我在很多其他项目中都使用过它。我的问题是我会得到什么理由

Failed to connect to mail.domain.co.uk:25 [SMTP: Failed to connect socket: Connection timed out (code: -1, response: )]

我尝试了几个不同的帐户和gmail帐户,我使用的代码来自stackoverflow,它有50多张选票,所以必须工作!是否有可能存在的服务器端限制?我的代码如下。

<?php
require_once "/usr/local/lib/php/Mail.php";

$from = "<notifications@domain.co.uk>";
$to = "<doe@domain.co.uk>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

$host = "mail.domain.co.uk";
$username = "notifications.domain.co.uk";
$password = "fu*****";

$headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject);
$smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true, 'username' => $username, 'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
    echo("<p>" . $mail->getMessage() . "</p>");
} else {
    echo("<p>Message successfully sent!</p>");
}
?>

任何帮助都会非常棒

1 个答案:

答案 0 :(得分:3)

我认为它与PEARMail无关。尝试从正在执行PHP的机器上执行telnet mail.domain.co.uk 25。如果你也得到超时,那不是PEARMail,它是网络。它可以有多种原因:防火墙,路由,中间的一些链接等。

基本上发送邮件失败的阶段是在端口25上建立到邮件服务器的TCP连接。首先调试,当你可以建立telnet连接时 - 我相当肯定你的PHP会工作太

---编辑---

我想到了另外一件事。你是否应该在你的本地家庭盒子上运行它,连接到你的标准家庭DSL运营商,其中许多人阻止传出端口25.在这种情况下,他们使用所谓的smarthost,基本上是SMTP中继在他们自己的场所,它将接受从您到任何地址的任何邮件。在ISP的网页上查找,他们必须知道它,然后使用它而不是mail.domain.co.uk。

--- edit2 ---

让我们排除PEARMail。

尝试使用以下一小段代码作为单独的脚本:

<?php
$fp = fsockopen("mail.domain.co.uk", 25, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    echo "I'm connected!<br />\n";
    fclose($fp);
}
?>

这应该排除PEARMail,因为这是一个简单易行的简单穷人telnet替换。