We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

Pobieranie wiadomości przez IMAP- problem z imap_7bit()


Rysiu
25-09-2011, 14:30
Witam wszystkich serdecznie.

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');

echo $tresc_wiadomosci;
Całość działa gdy kodowanie wynosi 3 lub 4. Nie ma wtedy żadnych problemów ze znakami polskimi itp. (czasem jednak też coś do końca nie trybi).

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()?