Autor Zpráva
neználek_2016
Profil
Zdravím,
obracím se na vás s prosbou o pomoc. Snažim se udělat jednoduchej scriptík na čtení pošty z gmailu a nějak jsem se v tom zamotal. Vše funguje jak má, ale nevim jak dekódovat odesílatele zprávy. Zobrazuje se směs znaků a malých+velkých písmen. Zkoušel jsem různé postupy co jsem našel na internetu, ale bez úspěchu :-(.

Zde je testovací script:
<!doctype html>
<meta charset="windows-1250">
<?php
set_time_limit(120);
include 'cnf.php';

$header = imap_headers($conn);
$start_time = time();
    echo "<b>Uživatel: </b>" . $username ."<br><br>\n";
$mbox = imap_open($server,$username,$password);
$n_msg = imap_num_msg($mbox);
    echo "<b>Počet zpráv ve schránce: </b>".$n_msg."<br><br>\n";
      for ($i=1; $i<=$n_msg; $i++) {
$header = imap_headerinfo($mbox,$i);
}

    $subject = imap_mime_header_decode($header->subject);
    $subject = $subject[0]->text;

$var = "0";
if ($header == 0)
  {
    echo "Žádné příchozí zprávy.<br />\n";
  }else{
while (list ($k, $val) = each ($header))
{
  $var = $var+1;
    $f_over = imap_fetch_overview($conn, $var, 0);

while(list($k, $v) = each($f_over))
    {
      echo "<b>Zpráva od: </b>".$v->from."<br>";
      echo "<b>Předmět: </b>".$subject."<br>";
      echo "<b>Datum: </b>".date("j. n. Y - H:i", strtotime($v->date))."<br>";
      echo "<a href=\"show.php?id=".$var."\">Přečíst</a> :: <a href=\"delete.php?id=".$var."\">Odstranit</a><br /><br>";
    }
  }
}
imap_close($conn);
?>
</body>
</html>

Předem díky!!!
Jan Tvrdík
Profil
neználek_2016:
Na takovéto věci je lepší použít funkční knihovnu, ale budiž. Zkus poslat konkrétně tu směs znaků, kterou vidíš, ať můžeme poradit konkrétněji. Zkusil bych to prohnat přes imap_mime_header_decode nebo iconv_mime_decode nebo base64_decode.
neználek_2016
Profil
zobrazuje se např. toto: =?ISO-8859-2?Q?Karel_Dvo=F8=E1=E8ek?= . Dělá to jen u odesílatele jinak vše OK :-(
Jan Tvrdík
Profil
$s = '=?ISO-8859-2?Q?Karel_Dvo=F8=E1=E8ek?=';
echo iconv_mime_decode($s);
neználek_2016
Profil
Jan Tvrdík:
paráda už jsem se chytil - funguje to. DÍKY !!! :-)
neználek_2016
Profil
Omlouvám se, ale jsem tady zase zpátky :-(. Našel jsem script na přeposílání zpráv, ale když se načte přijatá zpráva do textarea tak to hází zase to samé písmenkové smetí. Toto je kód funkce, která zajišťuje načtení do textarea:
function forward($id)
{
$imap = open();
$header = imap_header($imap, $id);
    $subject = imap_mime_header_decode($header->Subject);
    $subject = $subject[0]->text;
  $message['body'] = "\n\n>".quoted_printable_decode(imap_fetchbody($imap,$id,1));
  $message['subject'] = "Fwd: ".$subject;
return $message;
}

Vím, že otravuju ale budu rád za každé nakopnutí :-).
neználek_2016
Profil
Vyřešeno
Jan Tvrdík
Profil
neználek_2016:
Ono se ti to za chvíli pravděpodobně zase rozbije. Pracovat s maily bez nějakého knihovny je docela dřina.

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: