Здравствуйте!
Требуется получить письма с Яндекс Почты и внести их в базу данных на своем сайте. Проблемы в том, что полученные письма закодированы и раскодировать и не получается.
Есть код:
//Открываю поток IMAP к почтовому ящику
$imap = imap_open("{imap.yandex.ru:993/imap/ssl}", "login", "password");
//Получаю сообщения, удовлетворяющие заданным критериям
$mails_id = imap_search($imap, 'ON "12-Dec-2020"', OP_READONLY);
//Получаю и вывожу тело выбранных сообщений
foreach ($mails_id as $num) {
$body = imap_body($imap, $num);
echo '<pre>';
print_r($body);
echo '</pre>';
}
В итоге получаю что-то типа:
--000000000000bc6bc505b640126c
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
0JAg0YHRgtC+0LjRgiDQu9C4INC80L3QtSDQt9Cw0L ... //ЗАКОДИРОВАННЫЙ ТЕКСТ СООБЩЕНИЯ
--000000000000bc6bc505b640126c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: base64
PGRpdiBkaXI9ImF1dG8iPtCQINGB0YLQvtC40YIg0LvQuCDQvNC90LUg0LfQsNC/ ... //ЗАКОДИРОВАННЫЙ ТЕКСТ СООБЩЕНИЯ
Пробовал декодировать с помощью imap_base64 - возвращает пустоту. С помощью base64_decode - возвращает кракозябры "�M4�M4�M4mΛs�9o�4�n� ��z{Sʗ�{�V���Z�ǭQ1|". Пробовал их декодировать - ничего не вышло. Пробовал самые разные варианты с iconv - ничего не вышло.
Единственное, до чего пока что дошел: если декодировать ТОЛЬКО код выше с комментарием //ЗАКОДИРОВАННЫЙ ТЕКСТ СООБЩЕНИЯ с помощью imap_base64 или base64_decode, то все ОК.
Если же этот текст вместе с остальным ответом (типа --000000000000bc6bc505b640126c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 0JAg0YHRgtC+0LjRgiDQu9C4INC80...), то пустота, либо кракозябры.
То есть в теории я могу почистить весь ответ от ненужного и декодировать только тело сообщения, но может есть какой-то более универсальный вариант? Спасибо.