【问题标题】:PEAR Mail - Failed to connectPEAR 邮件 - 连接失败
【发布时间】:2012-01-09 23:47:40
【问题描述】:

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

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>");
}
?>

任何帮助都会非常棒

【问题讨论】:

  • 您可以独立于 PHP 远程登录到该主机的 25 端口吗?如果你连 telnet 都不能,那么有什么东西阻止了你的连接尝试(防火墙?),而不是你的 PHP 代码中的错误。

标签: php email pear


【解决方案1】:

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

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

--- 编辑---

我又想到了一件事。如果您有机会在本地家用机器上运行它,连接到您的标准家庭 DSL 运营商,它们中的许多会阻止传出端口 25。在这种情况下,它们使用所谓的smarthost,基本上是一个 SMTP 中继在他们自己的场所,它将接受您发往任何地址的任何邮件。在您的 ISP 的网页上查找它,他们必须公开它,然后使用它而不是 mail.domain.co.uk。

--- 编辑2 ---

那么让我们排除 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 替代品。

【讨论】:

  • 这不是我的主机,我正在为一家使用另一家公司托管 cpanel 等的小公司服务,但我认为我没有命令行访问权限。非常感谢,将进一步探讨
  • @PhilJackson:我用一个简单的连接测试器编辑了我的帖子。如果这也让您超时,您至少现在可以排除 PEARMail。
  • 警告:fsockopen() [function.fsockopen]:无法连接到 /home/usr/public_html/path/file.php 中的 mail.domain.co.uk:25(连接超时)在行号连接超时(110)
  • 抱歉,值班班,发生了事故。是的,所以你看它与 PEARMail 无关 :)
猜你喜欢
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 2013-07-02
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
相关资源
最近更新 更多