Entwickler-Ecke

Internet / Netzwerk - Body mit Indy auslesen


Husar - Fr 19.07.02 12:53
Titel: Body mit Indy auslesen
Ich kann alle Daten aus einer Mail auslesen nur was nicht funktionieren will ist der wichtigste Teil nämlich den Body


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button2Click(Sender: TObject);
begin
   pop.Connect;
   pop.Retrieve(2,IdMessage1);//ListView1.Selected.Index+1,
   IdMessage1);
   Edit5.Text := IdMessage1.From.Name;
   Edit7.Text := IdMessage1.From.Address;
   Edit6.Text := IdMessage1.Subject;
   Memo1.Text := IdMessage1.Body.Text;
   pop.Disconnect;
   IdMessage1.Clear;
end;


Kann mir vieleicht jemand sagen wo der Fehler liegt, und wie ich es machen soll.


Tino - Fr 19.07.02 12:59

Hi,

ich gehe mal davon aus das Memo1 vom Type tMemo ist. Dann liegt der Fehler wohl darin das tMemo keine Eigenschaft Text hat. Schau mal in der Hilfe unter tMemo nach. Da wirst Du sehen das diese Eigenschaft nicht vorhanden ist. Benutze besser das hier:

Quelltext
1:
Memo1.Lines.Text := IdMessage1.Body.Text;                    

oder wenn Body von tStrings abgeleitet wurde
Memo1.Lines := IdMessage1.Body;Gruß
TINO


Husar - Fr 19.07.02 13:17

Herzlichen Dank für deinen Tip,
hatte aber beides schon ausprobiert klappt leider nicht.


Tino - Fr 19.07.02 13:41

Kommt es zu einem Fehler oder so? Und wenn ja welcher!


Husar - Fr 19.07.02 13:54

Nein es kommt zu keinem Fehler, er zeigt mir halt nur nicht den Body


Klabautermann - Fr 19.07.02 14:50

Hallo,

die Body Eigenschaft kannst du vergessen, da der Body einer e-mail sich in mehrere Teile Spalten kann. Du musst über die Eigenschaft MessageParts an die Sache gehen.
Das hier ist das entsprechende (vereinfachte) Codefragment aus meinen E-Mailprogramm:


Quelltext
1:
2:
3:
4:
5:
FOR i := 0 TO Msg.MessageParts.Count -1 DO BEGIN
      IF Msg.MessageParts.Items[i] IS TIdText THEN BEGIN  // Wenn Body Text entdeckt wurde
        TRY
          Memo1.Items.Assign(TIdText(Msg.MessageParts.Items[i]).Body);
        [...]


Gruß
Klabautermann


Tino - Fr 19.07.02 15:05

Hi Klabautermann,

könnten mehrer MessageParts vom Typ tIdText sein? Wenn ich Deine Anweisung nach dem IF-THEN sehen dann wahrscheinlich nicht.

Gruß
TINO


Klabautermann - Fr 19.07.02 16:18

Hallo,

leider habe ich dadrüber auch keine genauen informationen gefunden (als ich den Code entwickelte).

Daher würde ich sagen, Theoretisch ja, Praktisch nein. Zumindest habe ich seit mein Programm [http://www.auq.de/viewtopic.php?t=343] draußen (seit Januar, ca. 5000 downloads) sind noch keine diesbezüglichen beschwerden gekommen ;). Auch in Demoprogrammen zu den Indy Komponenten wurde immer davon ausgegangen, das es nur einen solchen Part gibt.

Gruß
Kalbautermann


Husar - Fr 19.07.02 16:22

Danke, für deine Hilfe