Autor | Zpráva | ||
---|---|---|---|
AM_ Profil |
#1 · Zasláno: 20. 9. 2009, 12:01:30
Zdravím,
tvořím mailovou konferenci; e-maily ze schránky vyzvedávám pomocí PHP imap funkcí (server je pop3, ale php imap umí i pop3 protokol, s tím problém není); potřeboval bych ale zjistit znakovou sadu příchozího e-mailu a vůbec nevím jak, objekt vrácený přes imap_headerinfo() takovou informaci zjevně neobsahuje. Díky za pomoc |
||
Kalby Profil |
#2 · Zasláno: 20. 9. 2009, 14:29:29
KAzda, nebo vetsina zprav je rozdelena do urcitych "sekci" a kazda sekce muze mit vlastni kodovani, jsou to takzvane zpravy v mime formatu, a az v tele zpravy se dozvis v jakem kodovani vlastne zprava je. pokud chces zjistit kodovani jednotlivych casti zpravy pouzij funkci http://cz2.php.net/manual/en/function.imap-fetchstructure.php
Jeste bych chtel podotknout ze i predmet muze byt v ruznych kodovanich, tam to pak vypada nejak takto: Subject: =?utf-8?Q?čeština No je to cele slozite ja to cele delam bez imap knihovny protoze ji nemuzu pouzit uz asi pul roku a porad chodi nektere zpravy rozhazene :) |
||
AM_ Profil |
#3 · Zasláno: 20. 9. 2009, 22:11:42
díky, pomohlo :) předmět dekóduji nakonec pomocí imap_mime_header_decode + vlastní funkce, která z výsledku této poskládá win1250 řetězec, kdyby se to někomu hodilo:
function subject2str($subject){ $subj = imap_mime_header_decode($subject); $return = ''; foreach ($subj as $spart){ if ($spart->charset == 'default') { $return .= $spart->text; } else { $return .= iconv($spart->charset, "windows-1250", $spart->text); } } return $return; } popř. mě prosím opravte jestli tam mám chybu ale co jsem si zkoušel tak to funguje |
||
Časová prodleva: 15 let
|
0