vital
Guest
POP3 через сокеты, проблемы с чтением письма с кириллицей
Пишу почтового робота. IMAP не поддерживается, потому -- через сокеты. Проблема в том, что при наличии кириллицы в тексте сам текст письма не забирается полностью, только до первой (включительно) строки с кириллицей (точнее до строки с закодированной quoted-printable кириллицей). Кто сталкивался с подобным, помогите! Код с сокращениями -- ниже.
Пишу почтового робота. IMAP не поддерживается, потому -- через сокеты. Проблема в том, что при наличии кириллицы в тексте сам текст письма не забирается полностью, только до первой (включительно) строки с кириллицей (точнее до строки с закодированной quoted-printable кириллицей). Кто сталкивался с подобным, помогите! Код с сокращениями -- ниже.
PHP:
$host = 'mail.zhlobin.org';
$user = 'user';
$password = 'password';
$fp = fsockopen($host, 110, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />\n";
}
else
{
fwrite($fp, "USER ".$user."\r\n");
$res = fread($fp, 255);
if (strpos($res, '+OK') !== false)
{
fwrite($fp, "PASS ".$password."\r\n");
$res = fread($fp, 255);
if (strpos($res, '+OK') !== false) // Вход выполнен
{
fwrite($fp, "STAT\r\n");
$res = fread($fp, 255);
if (strpos($res, '+OK') !== false)
{
if (eregi('\+OK ([0-9]+) ', $res, $regs))
{
$mess_count = $regs[1]; // Количество пришедших писем
if ($mess_count > 0)
{
for ($mess_number = 1; $mess_number <= $mess_count; $mess_number++)
{
$reply_message = '';
fwrite($fp, "RETR $mess_number"."\r\n");
$res = fread($fp, 5120); // 5 КБ максимум
// ВОТ В ЭТОМ МЕСТЕ НЕ МОГУ ПОЛУЧИТЬ ТЕЛО ПИСЬМА ПОЛНОСТЬЮ!!!
fwrite($fp, "DELE $mess_number"."\r\n");
$res = fread($fp, 255);
if (!empty($reply_message) && !empty($mess_from)) to_mail($mess_from, 'robot:RE:', $reply_message);
}
}
}
}
fwrite($fp, "QUIT\r\n");
$res = fread($fp, 255);
}
}
fclose($fp);
}