Autor Beitrag
Björn karpenstein
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 96

Windows XP, Linux
D7, K3
BeitragVerfasst: Mi 19.10.05 18:34 
Hallo ich bin ein bischen am Verzweifeln, weil bei manchen Mails mein eMail-Body leer ist. Bitte mal unten den Quelltext angucken - im If-Teil kommen die Anlagen - im else-Teil soll der Body reingeschrieben werden. Bitte helft mir, weiss ned weiter ;'o(. Bei manchen Mails kommt auch manchmal gar nix an (z.B. der GMX-Newsletter).

Hier finde ich einen unbeantworteten Beitrag, der das selbe Problem schildert:
www.delphipraxis.net/topic19262.html

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
      //Liste mit Mailanhängen und Mailbody
      for i := 0 to Pred(IdMessage1.MessageParts.Count) do
      begin
        if (IdMessage1.MessageParts.Items[i] is TIdAttachment) then
        begin
          Application.ProcessMessages;

          AdoQuery2.SQL.Clear;
          AdoQuery2.SQL.Add('SELECT max(id) FROM email');
          AdoQuery2.Open;
            maxid := AdoQuery2.Fields[0].AsInteger;
          AdoQuery2.Close;

          if not DirectoryExists(ExtractFilePath(Application.ExeName)+'anlagen\'+IntToStr(maxid)) then
          begin

            if not ForceDirectories(ExtractFilePath(Application.ExeName)+'anlagen\'+IntToStr(maxid)) then
            begin
              ShowMessage('Es scheint Sie verfügen über keine Rechte in dem Verzeichnis von EasyMail! Abbruch!');
              abort;
            end;


            TIdAttachment(IdMessage1.MessageParts.Items[i]).SaveToFile
            (
            ExtractFilePath(Application.ExeName)+'anlagen\'+IntToStr(maxid)+'\'+
            TIdAttachment(IdMessage1.MessageParts.Items[i]).Filename
            );

          end;
          {li := ListViewMessageParts.Items.Add;
          li.Caption :=
           TIdAttachment(IdMessage1.MessageParts.Items[intIndex]).Filename;}

          Application.ProcessMessages;
        end else
        begin
          if IdMessage1.MessageParts.Items[i] is TIdText then
          begin
            ADOQuery1.FieldByName('email').AsString :=  TIdText(IdMessage1.MessageParts.Items[i]).Body.Text;
            Application.ProcessMessages;
          end;
        end;
      end;
Raffo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 300



BeitragVerfasst: Do 20.10.05 20:53 
Hab eigentlich noch nicht ganz so viel Ahnung von der Kompo, aber kann es sein, das diese Mails als Text kommen und Du aber nur mit Message.Parts arbeitest?

Was ist, wenn Du die Mails entweder in RAW Format holst

ausblenden Delphi-Quelltext
1:
pop3.RetrieveRaw(i,memo1.lines);					


oder ganz normal

ausblenden Delphi-Quelltext
1:
pop3.Retrieve(i,msg);					


Auf der anderen Seite hab ich schon gemerkt, wenn man "normal" die Mail abholt und es ist eine Multipart, zeigt er im Body nur "This is a multipart message" an.