Autor Zpráva
AM_
Profil
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
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
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: