我无法使用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);
?>
答案 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!";
}
?>