Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Mut zu Lücke ! Bitte um Erklerung Attachment Indy 9 (https://www.delphipraxis.net/64454-mut-zu-luecke-bitte-um-erklerung-attachment-indy-9-a.html)

wlfmario 3. Mär 2006 20:20


Mut zu Lücke ! Bitte um Erklerung Attachment Indy 9
 
Hallo zusammen,

ich brauche mal ein Erleuterung zu den Attachments Indy 9 (Datei und Text).

Wenn ich meine Mails empfange die keinen Anhang haben, kann ich zb. den Text der Mail mit
Delphi-Quellcode:
RichEdit1.Text := Msg.Body.Text;
sehen.

Wenn die Mail aber einen Anhang hat, erscheint nur
Zitat:

This is a multi-part message in MIME format
Wie komme ich jetzt an den Text drann der in der Mail steht ?

Zweite Frage: Was passiert hier genau ?
Delphi-Quellcode:
if Msg.MessageParts.Items[i] is TIDText then
        Attach := (Msg.MessageParts.Items[AttachCount] as TIDText).Body.Text;
Ich hoffe, das mir jemand meine Fragen Erklären kann.

Brainstalker 3. Mär 2006 20:47

Re: Mut zu Lücke ! Bitte um Erklerung Attachment Indy 9
 
Das was du gepostet hast müsste genau das tun was du haben willst.
Als erstes wird geprüft ob Item i der Multipart Email text ist. Wenn das so ist, wird der text in Attach gespeichert. Wenn du dort anstatt Attach, RichEdit1.Text angeben würdest müsste der Text ausgegeben werden. Oder du weist eben dem RichEdit1.Text den Inhalt von Attach zu.

wlfmario 3. Mär 2006 20:53

Re: Mut zu Lücke ! Bitte um Erklerung Attachment Indy 9
 
Tja so etwas habe ich mir schon gedacht ! Aber leider klappt das bei mir nicht !
Delphi-Quellcode:
procedure THauptForm.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
var
  i, AttachCount: integer;
  Attach: String;
  MailPfadDaten: TMailPfadDaten;
begin
AttachCount := 0;
i := 0;
  with ListView1 do
  begin
    for I := 0 to Items.Count - 1 do
      if Items[I].Selected then
      begin
        MailPfadDaten := TMailPfadDaten(Items[I].data);
        Msg.LoadFromFile(ExtractFilePath(Application.ExeName) +
          '/Mail-In/' + MailPfadDaten.Mailpfad, false);
        for AttachCount := 0 to Msg.MessageParts.Count -1 do
        begin
        if Msg.MessageParts.Items[i] is TIDAttachment then
        Attach := (Msg.MessageParts.Items[AttachCount] as TIDAttachment).FileName;

        if Msg.MessageParts.Items[i] is TIDText then
        begin
        RichEdit1.Text := (Msg.MessageParts.Items[AttachCount] as TIDText).Body.Text;
        end;
        end;
        //RichEdit1.Text := Msg.Body.Text;
      end;
  end;
end;
Es wird kein Text angezeigt. Bei dem
Delphi-Quellcode:
RichEdit1.Text := Msg.Body.Text;
wird zumindest bei der Mail ohne Anhang der Text angezeigt.

Brainstalker 4. Mär 2006 13:46

Re: Mut zu Lücke ! Bitte um Erklerung Attachment Indy 9
 
Soweit ich den Code jetzt verstanden habe müsste der Fehler in den zwei Schleifen liegen.
i ist bei die Variable für die ListView Schleife und AttachCount für die Multipart Schleife. Der Fehler müsste also in folgenden Zeilen liegen:
Delphi-Quellcode:
if Msg.MessageParts.Items[i] is TIDAttachment then
  Attach := (Msg.MessageParts.Items[AttachCount] as TIDAttachment).FileName;
Ich würde sagen das i in der ersten Zeile ist falsch. Das i müsstest du einfach mit AttachCount ersetzen. denn das hat ja nichts mit der ListView Schleife zu tun. Gleiches gilt auch für das IDText. Das müsste deinen Fehler beheben.

So müsste es dann aussehen:
Delphi-Quellcode:
if Msg.MessageParts.Items[AttachCount] is TIDAttachment then
  Attach := (Msg.MessageParts.Items[AttachCount] as TIDAttachment).FileName;

if Msg.MessageParts.Items[AttachCount] is TIDText then
  RichEdit1.Text := (Msg.MessageParts.Items[AttachCount] as TIDText).Body.Text;

wlfmario 4. Mär 2006 16:59

Re: Mut zu Lücke ! Bitte um Erklerung Attachment Indy 9
 
Danke für die Antwort !

Leider hat das nur zum Teil zum Erfolg geführt.

Ich habe mal die Procedure etwas umgebaut, so das ich im RichEdit sehe was alles angezeigt wird.
Bei Mails mit Anhang wird nur der Filename der Datei angezeigt nicht der Text der Mail.
Bei Mails ohne Anhang wird nichts angezeigt.

Wenn ich die gespeicherten Mails mir im OutlookExpress angucke ist alles vorhanden.

Delphi-Quellcode:
procedure THauptForm.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
var
  i, AttachCount: integer;
  Attach: string;
  MailPfadDaten: TMailPfadDaten;
  MailLoadStream: TFileStream;
begin
  AttachCount := 0;
  i := 0;
  with ListView1 do
  begin
    for I := 0 to Items.Count - 1 do
      if Items[I].Selected then
      begin
        MailPfadDaten := TMailPfadDaten(Items[I].data);
        MailLoadStream := TFileStream.Create(ExtractFilePath(Application.ExeName)
          +
          '/Mail-In/' + MailPfadDaten.Mailpfad, fmOpenRead or fmShareExclusive);

        Msg.LoadFromStream(MailLoadStream, false);
        MailLoadStream.Free;
        for AttachCount := 0 to Msg.MessageParts.Count - 1 do
        begin
          if Msg.MessageParts.Items[AttachCount] is TIDAttachment then
            Attach := (Msg.MessageParts.Items[AttachCount] as
              TIDAttachment).FileName;
          if Msg.MessageParts.Items[AttachCount] is TIDText then
            Attach := (Msg.MessageParts.Items[AttachCount] as
              TIDText).Body.Text;
        end;
      end;
  end;
  RichEdit1.Text := Attach;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz