Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
22.05.2012, 14:39:49
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Internet / LAN Forum
| | |-+  ... eMail dekodieren?
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: ... eMail dekodieren?  (Gelesen 1452 mal)
MeisterProper
Newbie
*
Offline Offline

Beiträge: 15


WWW
« am: 02.08.2004, 14:02:29 »

Hallo,

ich lade mit der indy komponente TIDPop3 und der Methode RetrieveRaw emails runter. Das problem ist, dass der body der email noch nicht dekodiert ist. das heißt, es steht zum beisliel "Stra=DFe" in der Email, anstatt "Straße". Kennt jemand einen algorithmus, mit dem dam die email dekodieren kann?

p.s.: einfach TIDPop3.Retrieve zu benutzen funktioniert nicht.

danke
Gespeichert

Die Erkenntnisse eines Bioinformatik Studenten
http://bioinformatik.gloomit.de
gringo6969
Jr. Member
**
Offline Offline

Beiträge: 62



« Antworten #1 am: 02.08.2004, 14:09:58 »

Hier,

in s1 ist die email-body

Code:

    while Pos('=',s1)>0 do

    begin

        c:=copy(s1,Pos('=',s1)+1,2);

        insert(Chr(StrToInt('$'+c)),s1,Pos('=',s1));

        delete(s1,Pos('=',s1),3);

    end;

Gespeichert
gringo6969
Jr. Member
**
Offline Offline

Beiträge: 62



« Antworten #2 am: 02.08.2004, 14:11:35 »

PS: soweit ich weiß wird der "=" Zeichen auch so codiert, so dass es problemlos funktioniert. ist jeddoch nicht nach RFC spezifikationen erstellt, sondern so wie ich es am einfachsten hatte.
Gespeichert
MeisterProper
Newbie
*
Offline Offline

Beiträge: 15


WWW
« Antworten #3 am: 02.08.2004, 14:29:00 »

Das funktioniert. Prima. Danke. Hab es direktmal in eine etwas praktischere Funktion gepackt.

Code:
Function DecodeIt( Text : String ) : String;

var

 tmp : String;

begin

 Result := Text;

 while Pos( '=', Result ) > 0 do

    begin

     tmp := copy( Result, Pos('=', Result ) + 1, 2 );

     try insert( Chr( StrToInt('$' + tmp) ), Result, Pos( '=', Result) ); except end;

     delete( Result, Pos( '=' , Result ), 3 );

    end;

end;
Gespeichert

Die Erkenntnisse eines Bioinformatik Studenten
http://bioinformatik.gloomit.de
gringo6969
Jr. Member
**
Offline Offline

Beiträge: 62



« Antworten #4 am: 02.08.2004, 14:33:56 »

Ich hatte es auch nur in der schnelle mal geschrieben. Ich denke es wäre besser du würdest den delete statement auch ins try reinschieben, denn falls IntTOStr einen fehler gibt, willst Du ja nicht die 3 zeichen löschen, oder?
Gespeichert
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS