Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Imap -> Decodier Frage [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Imap -> Decodier Frage


 
DuRoX
02-06-2003, 22:30 
 
Hi Leute!

Kurze Frage: Ich lese mit imap_body usw. den Inhalt einer HTML Mail aus. Bei Base 64 geht alles vorrausgesetzt ich dekodiere logischerweise mit Base_64. Nun das Prob: In der HTML Mail erscheinen komische Zeichen die da nicht hingehören wie z.B. so:

Anstatt

Gruß,

kommt:

Gru=DF,

und bei Leerzeilen kommt ein = und sonst öfters mal ein großes D, obwohl es da nicht hingehört.

Frage: Welche Dekodier Funktion muss ich nutzen um dieses zu umgehen / ausszuschließen? Oder muss ich etwa mit der normalen Replace Funktion arbeiten? Das geht aber nicht, da man ja nicht einfach das D aus der Datenbank streichen kann :D

cYa DuRoX

 
a4u
02-06-2003, 22:35 
 
Mach dich mal in der PHP-Manual über die Funktion imap_utf7_decode schlau.

http://de3.php.net/manual/de/function.imap-utf7-decode.php

 
DuRoX
02-06-2003, 22:46 
 
$a = imap_utf7_decode (imap_body($mbox, $i));

Habe ich jetzt.

Fehler:

Warning: imap_utf7_decode: Invalid modified base64 character: `=' in XXXXXX on line 38


Was nun? UTF7 geht nicht....

 
DuRoX
03-06-2003, 17:35 
 
Weiß denn keiner Rat wie ich diese vielen =3D usw. mit einer Funktion wegbekomme? Ich hab schon soviel versucht, bin am verzweifeln :(

Die Email Software's wie Horde können das ja auch entsprechend richtig konvertieren, deswegen muss es doch irgendwie eine Lösung geben.

cYa DuRoX

 
a4u
03-06-2003, 19:23 
 
Poste mal bitte Originaltext und der von deinem Programm / bisherigen Source ausgegebenen "Inhalt mit Fehlern".

 
Wotan
03-06-2003, 19:53 
 
Versuch mal das hier:

$subject = "=?ISO-8859-1?Q?B=F8lla?=, med =?ISO-8859-1?Q?=F8l?= i baggen";
$subject = imap_utf8($subject);
$subject = utf8_decode($subject);

 
DuRoX
03-06-2003, 20:33 
 
Danke für eure Antworten!

@ Wotan: Danke für deine HIlfe, aber ich möchte nur den Body also den Inhalt der Nachricht dekodieren und nicht den Betreff(zeile).

@a4u:

Das ist das was er ausgibt:

This is a multi-part message in MIME format. ------=_NextPart_000_0005_01C32A0E.B12C11F0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Leute! Kurze Frage: Ich lese mit imap_body usw. den Inhalt einer HTML Mail aus. Bei Base 64 geht alles vorrausgesetzt ich dekodiere logischerweise mit Base_64. Nun das Prob: In der HTML Mail erscheinen komische Zeichen die da nicht hingeh=F6ren wie z.B. so:=20 Anstatt Gru=DF,=20 kommt: Gru=3DDF,=20 und bei Leerzeilen kommt ein =3D und sonst =F6fters mal ein gro=DFes D, = obwohl es da nicht hingeh=F6rt. Frage: Welche Dekodier Funktion muss ich nutzen um dieses zu umgehen / ausszuschlie=DFen? Oder muss ich etwa mit der normalen Replace Funktion arbeiten? Das geht aber nicht, da man ja nicht einfach das D aus der Datenbank streichen kann =20 Gru=DF, =20 DuRoX =20 ------=_NextPart_000_0005_01C32A0E.B12C11F0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi Leute!

Kurze Frage: Ich lese mit imap_body usw. den = Inhalt einer HTML Mail aus. Bei Base 64 geht alles vorrausgesetzt ich dekodiere logischerweise mit Base_64. Nun das Prob: In der HTML Mail erscheinen komische Zeichen die da nicht hingeh=F6ren wie z.B. so:

Anstatt

Gru=DF,

kommt:

Gru=3DDF,

und bei Leerzeilen kommt ein =3D und sonst =F6fters mal ein gro=DFes D, = obwohl es da nicht hingeh=F6rt.

Frage: Welche Dekodier Funktion muss ich nutzen um dieses zu umgehen / = ausszuschlie=DFen? Oder muss ich etwa mit der = normalen Replace Funktion arbeiten? Das geht aber nicht, da = man ja nicht einfach das D aus der Datenbank streichen kann



Gru=DF,



DuRoX



------=_NextPart_000_0005_01C32A0E.B12C11F0--


Und das, was ich schrieb:

Hi Leute!

Kurze Frage: Ich lese mit imap_body usw. den Inhalt einer HTML Mail aus. Bei Base 64 geht alles vorrausgesetzt ich dekodiere logischerweise mit Base_64. Nun das Prob: In der HTML Mail erscheinen komische Zeichen die da nicht hingehören wie z.B. so:

Anstatt

Gruß,

kommt:

Gru=DF,

und bei Leerzeilen kommt ein = und sonst öfters mal ein großes D, obwohl es da nicht hingehört.

Frage: Welche Dekodier Funktion muss ich nutzen um dieses zu umgehen / ausszuschließen? Oder muss ich etwa mit der normalen Replace Funktion arbeiten? Das geht aber nicht, da man ja nicht einfach das D aus der Datenbank streichen kann



Gruß,



DuRoX




Soll jetzt nur als Beispiel dienen, bei Links und Sonderzeichen (was ich brauche, wird nur noch Mist ausgegeben.)

cYa DuRoX

 
Wotan
03-06-2003, 20:36 
 
Das läst sich auch so auf den Body anwenden. Must nur entsprechend umbauen.

 
DuRoX
03-06-2003, 21:41 
 
$container = imap_body($mbox, $i);
$container = "=?ISO-8859-1?Q?B=F8lla?=, med =?ISO-8859-1?Q?=F8l?= i baggen";
$container = imap_utf8($container);
$container = utf8_decode($container);
echo $container;


Das ist dein Code -> Umgebaut.

Ausgabe:

Bølla, med øl i baggen


*g* Da fragt man sich, was das jetzt soll ;)

cYa DuRoX

 
Wotan
03-06-2003, 22:27 
 
Habe das auch nur von der PHP.Net Seite
imap-utf8 (http://de3.php.net/manual/en/function.imap-utf8.php)


*grml* die haben doch glatt innerhalb von 3 Stunden die Seite geändert. *grml* (http://de3.php.net/manual/en/ref.imap.php)

 
DuRoX
04-06-2003, 11:55 
 
Ähm... Sorry jetzt verstehe ich gar nichts mehr. Soll das heißen, dass es nicht möglich ist eine Email mit einer Dekodierfunktion in PHP zu dekodieren? Horde usw. machen das ja auch; Dort habe ich mir auch schonmal den Code angesehen nur leider werde ich aus diesem äußerst komplexen Konstrukt nicht schlau :confused:


cYa DuRoX

 
Wotan
04-06-2003, 12:43 
 
$container = imap_body($mbox, $i);
$container = imap_utf8(container);
$container = utf8_decode($container);
echo $container;
Was passiert wenn du es so machst?


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:36 Uhr.