Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PEAR邮件-连接失败_Php_Email_Pear - Fatal编程技术网

Php PEAR邮件-连接失败

Php PEAR邮件-连接失败,php,email,pear,Php,Email,Pear,这已经连续三天在嘲笑我了。我已经安装了pear,脚本很好,因为我在许多其他项目中使用过它。我的问题是我会得到什么理由 Failed to connect to mail.domain.co.uk:25 [SMTP: Failed to connect socket: Connection timed out (code: -1, response: )] 我尝试了几个不同的帐户和gmail帐户,我使用的代码来自stackoverflow,它有50多张选票,所以必须工作!是否存在可能存在的服务器

这已经连续三天在嘲笑我了。我已经安装了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>");
}
?>


任何帮助都将是巨大的

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

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

---编辑---

我又想到一件事。如果您碰巧在本地家庭机顶盒上运行此功能,并连接到标准的家庭DSL运营商,其中许多都会阻止25号输出端口。在这种情况下,他们使用所谓的
智能主机
,基本上是在他们自己的场所上的SMTP中继,它将接受您发送到任何地址的任何邮件。在ISP的网页上查找,他们必须让您知道,然后使用它而不是mail.domain.co.uk

---编辑2---

那我们就排除皮尔邮件吧

请尝试将以下小代码作为单独的脚本:

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

您可以独立于PHP远程登录到该主机的端口25吗?如果你连telnet都不能,那么你的连接尝试(防火墙?)就被阻止了,而不是PHP代码中的错误。这不是我的托管,我是一家小公司的代理,它使用另一家公司的cpanel等托管,但我认为我没有命令行访问权限。谢谢你,威尔further@PhilJackson:我用一个简单的连接测试仪编辑了我的帖子。如果这也给了您一个超时,您至少可以暂时排除PEARMail。警告:fsockopen()[function.fsockopen]:无法连接到/home/usr/public\u html/path/file.php中的mail.domain.co.uk:25(连接超时)在线号码连接超时(110)对不起,正在通话中,发生了一个事件。是的,所以你看这和PEARMail没有关系:)