Autor | Zpráva | ||
---|---|---|---|
aDAm Profil |
#1 · Zasláno: 23. 7. 2012, 10:38:56
Zdravím.
Mám trošku problém s kódování přijatých emailů které zpracovávám pomocí PHP funkcí IMAP. Klasicky se připojím na pop3 mailový server, načtu zprávy a pak je po jedné zpracovávám. 1. Pomocí funkce imap_header si načtu hlavičku mailu a zjistím z ní předmět, datum 2. S pomocí funkce imap_mime_header_decode ze subjectu zjistím kódování zprávy 3. Pak si funkcí imap_fetchstructure načtu celou strukturu emailu a dále s ním pracuju podle toho jestli má nějaké parts nebo ne a pomocí funkce imap_fetchbody vytahuju jednotlivé texty. Buď vytáhnu PLAIN text a když není k dispozici tak HTML 4. Podle toho jaké má encoding daná část mailu se ještě provede dekodování. Když je encoding rovno 3 tak se použije imap_base64 a když je encoding rovno 4 tak zase quoted_printable_decode Po tomto kroku mám načtené tedy hlavní části mailu co mě zajímají ovšem někdy je text s českými znaky nečitelný. Do systému jej potřebuju dostávat v UTF-8 tak ještě tedy ty body části převedu pomocí ICONV z encoding co jsem zjistil v bodě 2 na UTF8. U některých mailů to projde ok a čeština se korektně hodí do UTF8 ale u některých se to rozhodí. Zkoušel jsem tam ještě přidat funkci mb_detect_encoding která mi detekovala zda je to UTF8 nebo ne a podle toho se to ICONVem přeformátovalo. Ovšem třeba u mailů co byly odeslány přes gmail to zase nasekalo chyby. Může mi nekdo poradit kde dělám chybu? Nebo jak se dopracovat k tomu aby jakýkoliv mail byl správně převeden do UTF8? |
||
Keeehi Profil |
#2 · Zasláno: 23. 7. 2012, 11:36:03
A funkce autoutf() by to korektně nezvládla?
|
||
Časová prodleva: 12 let
|
0