TIdPOP3 Emails speichern
-
Hi !
Also ich probiere schon seit mehreren Stunden eine EMail mit Hilfe der TIdPOP3-Komponente zu speichern.
Leider bisher ohne Erfolg.
Die Beispiel Progs auf der Indy-Homepage bringen mich da auch nicht weiter.
Also ich möchte gerne den Body und den Anhang in zwei separten Dateien speichern. So wie ich das gemacht habe funktioniert das leider nicht:for (z=0;z<Msg->MessageParts->Count;z++) { if (Msg->MessageParts->Items[z]->ClassNameIs("TIdAttachment")) { attach=(TIdAttachment*)Msg->MessageParts->Items[z]; attach->SaveToFile(attach->FileName); } else { body=(TIdText*)Msg->MessageParts->Items[z]; for (z2=0;z2<body->Body->Count;z2++) { ptr2=fopen("Test.txt","at"); fprintf(ptr2,"%s\n",body->Body->Strings[z].c_str()); fclose(ptr2); } } } Kann mir vieleicht jemand weiterhelfen ? Gruss Daniel666
-
aehm muss natürlich heissen
... fprintf(ptr2,"%s\n",body->Body->Strings[z2].c_str()); ...
-
Original erstellt von <Daniel666>:
**... So wie ich das gemacht habe funktioniert das leider nicht...
**Muss uns schon sagen, was nicht funktioniert.
Im Übrigen sind Sachen wie fopen (also altes C Zeug) nicht besonders elegant, da gibt es in der VCL sehr viel schönere und sicherere Methoden.
-
...der Body und das Attachment sind angeblich leer.
Er findet zwar ein TIdAttachment und auch TIdText, aber wenn ich die Methode SaveToFile (bei TIdAttachment) ist die Datei 0 Bytes gross.
-
Hallo !
Habe festgestellt, daß das Ganze nicht an der Art und Weise liegt wie ich auf die Parts zugreife.
Wenn ich die Methode SaveToFile der Klasse TIdMessage aufrufe fehlen Body und Attachments auch. Der Header ist allerdings in Ordnung.
Auch wird die EMail korrekt und vollständig runtergeladen.Weiss einer weiter ?
Gruss Daniel666
-
Neue Erkenntnisse:
Wenn ich eine EMail mit RetrieveRaw empfange und diese dann abspeicher ist sie vollständig.
Nutze ich dann die Methode LoadFromFile oder LoadFromStream sind Attachment und Body ebenfalls leer, obwohl die einzelnen MessageParts gefunden werden.Ich nutze Indy 9.0.13. Kann es sein, daß es sich um einen Bug in der TIdMessage-Klasse handelt ?
-
Auf dein ursprüngliches Beispiel bezogen: hast du statt des C-Casts mal dynamic_cast probiert und getestet, ob die Zuweisung an attach überhaupt erfolgreich ist?
-
Ja ich habe es mit dynamic_cast ausprobiert und der cast scheint auch erfolgreich zu sein, da der FileName im TIdAttachment ist richtig.
Gruss Daniel666