![]() |
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:
sehen.
RichEdit1.Text := Msg.Body.Text;
Wenn die Mail aber einen Anhang hat, erscheint nur Zitat:
Zweite Frage: Was passiert hier genau ?
Delphi-Quellcode:
Ich hoffe, das mir jemand meine Fragen Erklären kann.
if Msg.MessageParts.Items[i] is TIDText then
Attach := (Msg.MessageParts.Items[AttachCount] as TIDText).Body.Text; |
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. |
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:
Es wird kein Text angezeigt. Bei dem
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;
Delphi-Quellcode:
wird zumindest bei der Mail ohne Anhang der Text angezeigt.
RichEdit1.Text := Msg.Body.Text;
|
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:
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.
if Msg.MessageParts.Items[i] is TIDAttachment then
Attach := (Msg.MessageParts.Items[AttachCount] as TIDAttachment).FileName; 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; |
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 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz