【问题标题】:imap_open() cannot open stream using POP3 protocolimap_open() 无法使用 POP3 协议打开流
【发布时间】:2014-10-20 13:33:11
【问题描述】:

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

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

我在代码中也打印了最后一个错误,
无法连接到邮件:连接到 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);
?>

【问题讨论】:

    标签: php email imap pop3


    【解决方案1】:

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

    凭据在 Outlook 中有效,因为您可能正在从您的网络主机/服务器以外的其他地方尝试。

    您可以在服务器上检查是否可以进行传出连接:

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

    【讨论】:

    • 我没想到传出服务器会阻塞端口。我认为它是阻塞的,因为它是一个免费的 PHP Web 服务器。非常感谢您的回答。
    • 如果它是一个免费的 PHP Web 服务器,那么我几乎可以赌上我的生命,它被防火墙封死了。
    猜你喜欢
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 2014-04-16
    • 2019-05-11
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    相关资源
    最近更新 更多