У меня есть код:fsockopen - как определить конец сообщения?
$f = fsockopen('mail.myserver.com', 110); //POP3
echo fgets($f, 4096) . '<hr>';
fputs($f, "USER [email protected]\r\n");
echo fgets($f) . '<br>';
fputs($f, "PASS mypass\r\n");
echo fgets($f) . '<br>';
fputs($f, "LIST\r\n");
echo fgets($f) . '<br>';
fputs($f, "RETR 1\r\n");
До сих пор так хорошо, но у меня есть цикл, чтобы получить сообщение целиком:
while (!feof($f))
{
echo fgets($f, 1280);
}
и он принимает навсегда, потому что сценарий ждет тайм-аут, чтобы умереть — НИКОГДА не обнаруживает EOF сам по себе.
Как я могу обнаружить EOF и разбить цикл до того, как он истечет? Если я использую telnet, тогда все работает — как-то клиенты telnet знают, когда прекратить получать.
Вы всегда можете использовать (http://php.net/manual/en/book.imap.php). –
@ PawełMalisak: Я не могу, это довольно редкое расширение и недоступно на моем сервере. – Tom