imap_open()无法使用POP3协议打开流

时间:2014-08-27 04:53:47

标签: php email imap pop3

我无法使用imap函数检索我的邮件,但遇到错误说“无法打开流”#。

消息是
警告:imap_open()[function.imap-open]:无法在第3行打开流{...:110}

我在代码中打印了最后一个错误,
无法连接到Mail:连接失败到myserver.net,110:连接超时

我不明白'连接超时',因为POP3服务器可以正常使用我的邮件客户端,例如Outlook。

我按照指示检索我的POP3邮件,并通过网络搜索确认我可以使用imap功能在POP3服务器中检索邮件。

我也试过' / novalidate-cert'选项并检查用户名和密码。 但没有区别。

我在下面附上了我的代码。这对我来说很神秘, 我可以直接连接到POP3服务器吗?

<?php
$mbox = imap_open("{mail.myserver.net:110/pop3}", "tester@myserver.net", "passme") or die('LAST ERROR: Cannot connect to Mail: ' . imap_last_error());;

echo "<h1>Mailboxes</h1>\n";
$folders = imap_listmailbox($mbox, "{mail.myserver.net:110/pop3}", "*");

if ($folders == false) {
    echo "Call failed<br />\n";
} else {
    foreach ($folders as $val) {
        echo $val . "<br />\n";
    }
}

echo "<h1>Headers in INBOX</h1>\n";
$headers = imap_headers($mbox);

if ($headers == false) {
    echo "Call failed<br />\n";
} else {
    foreach ($headers as $val) {
        echo $val . "<br />\n";
    }
}

imap_close($mbox);
?>

1 个答案:

答案 0 :(得分:2)

我认为你的服务器是防火墙的,不允许传出连接,或者特别是不允许端口110上的传出连接。

凭据可以在Outlook中运行,因为您可能是从Web主机/服务器以外的其他地方尝试的。

您可以检查服务器是否可以建立传出连接:

<?php
    $test = @fsockopen("mail.example.com", 110, $errno, $errstr, 10);
    if (!$test)
    {
        echo "Nope! We're blocked by the server:<br /><pre>$errstr ($errno)</pre>\n";
    }
    else
    {
        echo "Woot! Our packets can escape! Run, packets, run!";
    }
?>