首页 文章

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

提问于
浏览
1

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

信息是
Warning: imap_open() [function.imap-open]: Couldn't open stream on line 3

我在我的代码中打印了最后一个错误,
Cannot connect to Mail: Connection failed to myserver.net,110: Connection timed out

我不明白'连接超时',因为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
\n"; } else { foreach ($folders as $val) { echo $val . "
\n"; } } echo "<h1>Headers in INBOX</h1>\n"; $headers = imap_headers($mbox); if ($headers == false) { echo "Call failed
\n"; } else { foreach ($headers as $val) { echo $val . "
\n"; } } imap_close($mbox); ?>

1 回答

  • 2

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

    凭据在Outlook中可用,因为您可能是从Web主机/服务器以外的其他位置尝试该凭据 .

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

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

相关问题