Wyciągam dane z emaili za pomocą IMAP.
Z nadawcą, tematem i innymi mniejszymi danymi nie ma problemu.
Problemy zaczynają się przy samej treści wiadomości.
Mam coś takiego:
$tresc_wiadomosci = imap_fetchbody($mbox, $i, "1"); $structure = imap_fetchstructure($mbox, $i); $kodowanie = $structure->encoding; if ($kodowanie == 0) { $tresc_wiadomosci = imap_7bit($tresc_wiadomosci); } else if ($kodowanie == 1) { $tresc_wiadomosci = imap_8bit($tresc_wiadomosci); } else if($kodowanie == 2) { $tresc_wiadomosci = imap_binary($tresc_wiadomosci); } else if($structure->parts[0]->encoding == 3 || $kodowanie == 3) { $tresc_wiadomosci = imap_base64($tresc_wiadomosci); } else if($kodowanie == 4) { $tresc_wiadomosci = imap_qprint($tresc_wiadomosci); } $tresc_wiadomosci = mb_convert_encoding($tresc_wiadomosci, 'UTF-8', 'ISO-8859-2');
Całość działa gdy kodowanie wynosi 3 lub 4. Nie ma wtedy żadnych problemów ze znakami polskimi itp.
Problem jednak pojawia się w momencie gdy kodowanie jest równe 0. Wtedy według manuala powinienem wykorzystać funkcję imap_7bit() ale tej funkcji nie ma w mojej wersji PHP. Gdy imap_7bit() chcę zastąpić czymś innym to sypią się ostre błędy.
Dalej w mb_convert_encoding(); rodzaje kodowania są jeszcze wpisane na sztywno ale nie to jest problemem, bo wszystkie maile przychodzące są w ISO-8859-2.
Ktoś może wie jak rozwiązać ten problem z imap_7bit()?