Во-первых, проверили ли вы telnet - то есть, если вы находитесь на том же сервере / рабочей станции, на которой выполняется PHP-скрипт, и вы вводите:
telnet mx.mailserver.com 110
Ты получил приветствие? (Вы также не читаете это - так что ваше чтение из команды, в которую вы отправляете имя пользователя, получит это в ответ, так что ваш код будет работать, но в основном случайно.
Если вы не можете заставить его работать через telnet, тогда остановитесь и включите его в первую очередь - иначе бессмысленно.
Вам может потребоваться отправить \ r \ n в конце каждой команды.
$plug->write("USER $username\r\n")->read();
Так что вам нужно сделать что-то вроде:
$plug = new Socket('mx.mailserver.com',110);
$greeting = $plug->read(); // check this said +OK
$plug->write("USER $username\r\n")->read(); // check this said +OK
$could = $plug->write("PASS $password\r\n")->read();
if(strpos($could,'+OK')!==false) {
$mails = $plug->write("STAT\r\n");
}
Я не совсем уверен в вашей строке strpos () - но я не могу проверить это прямо сейчас.
Как я уже сказал, прежде чем сделать НИЧЕГО иначе убедитесь, что в Telnet все работает нормально.
Если это произойдет, то просмотрите журналы сервера (если это возможно) и выясните, связываетесь ли вы с сервером POP3 и что он получает.
Вот пример последовательности:
telnet pop.blah.com 110
+OK Welcome to MailEnable POP3 Server
ПОЛЬЗОВАТЕЛЬ Мэтью
+OK
PASS mypassword
+OK
STAT
+OK 0 0
Надеюсь, это поможет.