Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z dekodowaniem treści maila, Problem ze zdekodowaniem treści maila - poslkie znaczki itp
gsawicki
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


Witam.

Mam problem. Zainstalowałem system help desk - Trellis Desk. Uruchomiłem rejestrowanie wiadomości e-mail poprzez pipe.php. Samo przechwytywanie działa dobrze, ale mam duży problem ze zdekodowaniem wiadomości. Wiadomość może być wysłana jako tekst / html / tekst i html, skrypt sam to rozpoznaje, usuwa tagi html, ale mam problem ze zdekodowaniem polskich znaczków, które mogą być jako unicode, iso, win itp.

Oryginalnie w skrypcie, za tą metodę jest odpowiedzialna ta linia:
$email['message'] = $ifthd->sanitize_data( utf8_encode( decode_ISO88591( imap_utf8( $email['message'] ) ) ) );
Jednak znaczki wyglądają albo tak:
fêó¿¼€
albo tak:
óęóś€śą€żóóęęńę

Jak tą linijkę przerobić aby polskie znaczki dobrze były konwertowane? Proszę o pomoc, bo sam sobie nie poradzę!

Pozdrawiam
Grzegorz
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Black-Berry
post
Post #2





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


A co sie dzieje jak dasz tak:

$email['message'] = $ifthd->sanitize_data($email['message']);

zmienia się cos ?

Przydałoby się wiedziec w jakim kodowaniu jest zmienna $email['message'] jakie masz nagłówki w mailu no i w jakim kodowaniu otwierasz maila (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Słowem wtawiając wszystko wszędzie na UTF-8 powinno działać.

Ten post edytował Black-Berry 6.12.2008, 15:29:47
Go to the top of the page
+Quote Post
gsawicki
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


Witam.

Jeśli wiadomość jest w UTF to Twój kod powinien poprawnie zwrócić wiadomość.
Niestety jak jest w iso to zawsze będą krzaki. Zrobiłem sobie log po każdej funkcji, która jest w linii dekodującej i iso nigdy nie jest poprawne.
System wyświetla strony w UTF, więc powinna być konwersja na UTF. Myślę, że z wyborem kodowanie z maila bym sobie poradził, pytanie tylko jak to przekonwertować, moja wiedza na temat PHP ogranicza się do przekopiowania kodu ewentualnie z dużą pomocą helpa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam
Grzegorz
Go to the top of the page
+Quote Post
Black-Berry
post
Post #4





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


W email headers powinna byc tez taka linijka: "Content-Type: text/html; charset=utf-8\n";
Go to the top of the page
+Quote Post
gsawicki
post
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


OK, to jeśli będzie UTF to sobie poradze, a jeśli będzie iso to jak mam to przekonwertować?
Go to the top of the page
+Quote Post
Black-Berry
post
Post #6





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Mozliwe ze problem tkwi w linijce decode_ISO88591
Polskie iso to chyba decode_ISO88592 z tego co pamietam
Go to the top of the page
+Quote Post
gsawicki
post
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


Witam.
decode_ISO88591 to funkcja w pliku pipe.php, która ma wpisane znaki, które trzeba podmienić w standardie ISO 88591, nie ma funkcji decode_ISO88592 w tym pliku ani wbudowanej w php. Ktoś po prostu tą funkcję ręcznie napisał. Czy to oznacza, że ja muszę taką funkcję napisać dla 88592 i win1250??

Pozdrawiam
Go to the top of the page
+Quote Post
Black-Berry
post
Post #8





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Wklej tą funkcję.

Ten post edytował Black-Berry 8.12.2008, 12:06:10
Go to the top of the page
+Quote Post
gsawicki
post
Post #9





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


Oto treść funkcji:

function decode_ISO88591( $string )
{
$string = str_replace( "=\r\n", "", $string );

$string = str_replace("=?iso-8859-1?q?","",$string);
$string = str_replace("=?iso-8859-1?Q?","",$string);
$string = str_replace("?=","",$string);

$charHex = array( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" );

for( $z=0; $z < sizeof($charHex); $z++ )
{
for( $i=0; $i< sizeof($charHex); $i++ )
{
$string = str_replace( ("=" .( $charHex[$z].$charHex[$i] ) ), chr( hexdec( $charHex[$z].$charHex[$i]) ), $string );
}
}

return($string);
}
Go to the top of the page
+Quote Post
Black-Berry
post
Post #10





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


no a jak podmienisz iso-8859-1 na iso-8859-2? to nic nie daje?
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Wyszukiwarka gryzie?!
http://forum.php.pl/index.php?showtopic=80...mail++kodowanie
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 22:23