Entwickler-Ecke

Internet / Netzwerk - IdPOP3 Problem


superchatti - Mi 11.06.03 17:49
Titel: IdPOP3 Problem
Also!
Ich bnutze folgenden Code bei ListView.DblClick(ich arbeite an einem E-Mail Programm!):


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TfrmMain.MailsDblClick(Sender: TObject);
var
i:integer;
begin
POP.Retrieve(Mails.Selected.Index + 1, Mail);
for i := 0 to Pred(Mail.MessageParts.Count) do
begin
Memo1.Lines.AddStrings(TIdText(Mail.MessageParts.Items[i]).Body);
end;
ToolButton3.Enabled := true;
ToolButton4.Enabled := true;
end;


Mails ist das ListView und Mail die IdMessage!
Und POP erklärt sich von alleine!

Also!
Wenn ich jetzt doppelt da drauf klicke dann zeigt der die Nachricht nicht an!

Also in der Memo steht nichts!
Kann mir jemand helfen??


Hansi@OMG - Fr 13.06.03 16:35

So gehts:

Delphi-Quelltext
1:
memo1.Lines.AddStrings(idmessage1.Body);                    


superchatti - Sa 14.06.03 17:34

Probier ich gleich mal aus!
Danke!

Weißt du zufällig wie ich das dann alles speichern kann??


Hansi@OMG - Sa 14.06.03 17:36

Die komplette Nachricht oder nur der Text?


Hansi@OMG - Sa 14.06.03 17:40

Die Message speicherst du mit:

Delphi-Quelltext
1:
idmessage1.SaveToFile('C:\test.dat',false);                    

Das Memofeld speicherst du mit:

Delphi-Quelltext
1:
memo1.Lines.SaveToFile('C:\test.dat');                    

Such dir eines aus.


superchatti - Sa 14.06.03 17:43

Ich wollte das so:
Zu jedem Item den ensprechenden Memotext


superchatti - Sa 14.06.03 17:44

Irgendwie passiert nichts mit der Memo!


Hansi@OMG - Sa 14.06.03 17:45

Da musst du selbst dranbasteln, da kann ich dir leider nicht helfen, aber vielleicht jemand anders, ich hab dir alles gesagt, was ich weis.


Hansi@OMG - Sa 14.06.03 17:46

Wie es passiert nicht? Schreibt er nichts rein, oder speichert er nicht?


superchatti - Sa 14.06.03 17:47

Er schreibt nichts rein!


Hansi@OMG - Sa 14.06.03 17:51

Dann wird vermutlich nichts abgerufen.
Denn versuch mal einfach das:

Delphi-Quelltext
1:
2:
idmessage1.Body.Text:='test';
memo1.lines.add(idmessage1.Body.Text);


superchatti - Sa 14.06.03 17:52

Dan fügt er test in die memo ein!


Hansi@OMG - Sa 14.06.03 17:53

Du darfst ihm außerdem nicht gleich schreiben, dass er etwas ausführen soll, sondern er muss er connecten:

Delphi-Quelltext
1:
idpop31.connect;                    

Und zum Schluß muss er wieder disconnecten

Delphi-Quelltext
1:
idpop31.disconnect;                    


Hansi@OMG - Sa 14.06.03 17:55

Siehst du, dann fügt er es ein, das ist im Prinzip nichts anders, als das was er dann ausführt, er nimmt den Empfangenen "Bauch" der Message und schreibt ihn in das Memo.


superchatti - Sa 14.06.03 17:56

POP ist schon connected!
Also!
Das DblClick ist nur Enabled wenn POP.Connect ist!!
Es funktioniert immer noch nicht!!


Hansi@OMG - Sa 14.06.03 17:57

An deiner Stelle würd ich mir mal die Indydemos ganz genau anschauen, denn da ist alles drin, was du brauchst und brauchen könntest.


Hansi@OMG - Sa 14.06.03 17:58

Schick mir mal dein Programm, ich überarbeite es dir kurz


superchatti - Sa 14.06.03 17:59

Ja!
Da steht beim DblClick:

Delphi-Quelltext
1:
if Mail.MessageParts.Items[i] is TIdText then                    


Aber er soll es auch machen wenn nicht nur TIdText!


superchatti - Sa 14.06.03 17:59

Ok!
Mach ich!

Aber bitte nicht für eigene Zwecke benutzen!!


superchatti - Sa 14.06.03 18:00

So!
Ich schicks jetzt los!
Ist in einem RAR-Archiv


Hansi@OMG - Sa 14.06.03 18:00

Was ist bei dir TidText?


superchatti - Sa 14.06.03 18:02

Ach!
Siehst du gleich im Code!!


Hansi@OMG - Sa 14.06.03 18:12

Puh, sorry, aber es sollte so eigentlich funktionieren. Tut mir leid, da kann ich dir nicht weiterhelfen.


superchatti - Sa 14.06.03 18:13

Tja!
Dann...
Mist!

:lol:


Dusty - So 15.06.03 14:32

Schau doch mal, in welchem Format Deine Email ist (Contenttype). Wenn Content-Type "multipart/alternative" ist, dann ist der Body eben leer. Und bei "multipart/Base64" ist der Body "This ist a multipart message in MIME format" oder so ähnlich. In diesen Fällen muss die Email erst decodiert werden. Indy kann es, aber wie, ist ein grosses Rätsel. Habe die Frage nach der Decodierung schon in alle Foren gestellt, aber offenbar weiss es niemand :-(