Avatar billede lubker Nybegynder
13. september 2006 - 23:27 Der er 11 kommentarer og
1 løsning

Udtræk det væsentlige af email hentet med IMAP

Hej.
Jeg sidder og leger med en webbaseret pop3 client til læsning af e-mail.

Jeg bruger indtil videre følgende script, men der er stadig en lille smule i toppen og bunden af mailen, den ikke fjerner.

$body = imap_body($mailbox, $index);
//-------------------------
    //types
    $type = array("text", "multipart", "message", "application", "audio", "image", "video", "other");
    // message encodings
    $encoding = array("7bit", "8bit", "binary", "base64", "quoted-printable", "other");

    $struc = imap_fetchstructure ($mailbox, $index);

    $tencoding = $encoding[$struc->parts[1]->encoding];
    $dataHtml = imap_fetchbody($mailbox, $index, 2);

    if ($tencoding == "base64")
        $body = base64_decode($body);
    else if ($tencoding == "quoted-printable")
        $body = quoted_printable_decode($body);
    else if ($tencoding == "binary")
        $body = utf8_decode($body);
    else $body = $dataHtml;


Ex:
--=_fc3471f92ef4a71bfded15c2af26063f Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Mail...
--=_fc3471f92ef4a71bfded15c2af26063f--

Hvordan kan jeg fjerne det sidste, så mailen bliver lidt mere læsbar?
Avatar billede nielle Nybegynder
14. september 2006 - 08:15 #1
Jeg vil gætte på at det kan gøres med dette:

if ($tencoding == "base64")
    $body = base64_decode($body);
else if ($tencoding == "quoted-printable")
{
    $body = quoted_printable_decode($body);
    $body = preg_replace("#(.*?) Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable\s*(.*)\s*\\1--#is", "\\2", $body);
}
else if ($tencoding == "binary")
    $body = utf8_decode($body);
else $body = $dataHtml;
Avatar billede lubker Nybegynder
14. september 2006 - 08:32 #2
Ja, det ligner da en mulighed.
Desværre medlder den fejl. kunne forestille mig det er " der giver problemer.
Avatar billede nielle Nybegynder
14. september 2006 - 11:50 #3
Klart. Det skal escapes:

$body = preg_replace("#(.*?) Content-Type: text/plain; charset=\"iso-8859-1\" Content-Transfer-Encoding: quoted-printable\s*(.*)\s*\\1--#is", "\\2", $body);
Avatar billede lubker Nybegynder
14. september 2006 - 12:03 #4
Det prøvede jeg også, med får fejlen:
Parse error: parse error, unexpected T_ELSE in /var/www/web11/html/inbox.php on line 40  altså netop denne linje.
Avatar billede nielle Nybegynder
14. september 2006 - 12:32 #5
Sikker på at du ikke bare har glemt en tuborgparentes et eller andet sted?
Avatar billede lubker Nybegynder
14. september 2006 - 12:51 #6
Det er jeg rimelig sikker på.
Det virker så snart jeg udkommenterer linjen.
Avatar billede nielle Nybegynder
14. september 2006 - 12:56 #7
Post lige din kode :^)
Avatar billede lubker Nybegynder
14. september 2006 - 12:56 #8
Ja okay.
Min fejl. Det var en tuborg.
Avatar billede nielle Nybegynder
14. september 2006 - 13:44 #9
Fungere det som løsning?
Avatar billede lubker Nybegynder
14. september 2006 - 13:53 #10
Desværre ikke.
Den fjerner ikke hverkern starten eller slutningen.
HAr ikke lige så meget tid nu, men vil kigge nærmere på det i aften, og sammenligne med andre systemers løsninger.
Avatar billede lubker Nybegynder
14. september 2006 - 14:44 #11
Lægger du et svar.
Du har været til stor hjælp-
Fandt et kanon artikkel om emnet på nettet. http://www.linuxscope.net/articles/mailAttachmentsPHP.html
Kan helt sikkert anbefales.
Avatar billede nielle Nybegynder
14. september 2006 - 15:29 #12
Ok :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester