![]() |
AW: Schnelle Einführung in Indy
Hallo,
den Thread habe ich wohl übersehen ;) Also drehen wir es um. Probier POP3 mit FetchHeaders. Dann wird nicht die komplette E-Mail heruntergeladen. Ich weiss nicht, ob das beim IMAP auch geht. |
AW: Schnelle Einführung in Indy
Ich habe den Eindruck, dass Indy nicht so viel verwendet wird.
Gibt es gute Alternativen dazu ? Wie gesagt möchte ich zurzeit in erster Linie IMAP (Version 4) verwenden. |
AW: Schnelle Einführung in Indy
Eine open source Alternative zu Indy ist ICS (
![]() Diese arbeitet meist komplett asynchron, blockiert also dein Programm nicht sondern nutzt Events. Ob die auch IMAP oder nur POP3 kann weiß ich gerade jedoch nicht und die Dokumentation ist leider sehr unvollständig, dafür sind da jede Menge Beispielprogramme mit dabei. Funktioniert für Windows und ich glaube auch MacOS X, aber nicht für die mobilen Plattformen. Du klangst aber auch nicht so, als ob du die bräuchtest. ICS gibt's in 2 Varianten (VCL only und VCL/FMX) auch in GetIt. Im englisch sprachigen Delphi-Praxis Forum gibt es seit ein paar Monaten auch ein spezielles Support Forum für ICS, da die vorher genutzte Mailingliste mehrfach Ärger bereitet hatte. Grüße TurboMagic |
AW: Schnelle Einführung in Indy
Danke TurboMagic,
welche Erfahrungen hast du mit ICS gemacht bezüglich Zuverlässigkeit, Funktionsumfang ..? Die unvollständige Dokumentation hast du ja bereits erwähnt. Kannst du vielleicht sogar einen Vergleich mit INDY ziehen ? Vorderhand bleibe ich mal bei INDY, denn mittlerweile, nach viel Zeitaufwand, laufen bei mir die wichtigsten Funktionen: Ich kann e-mails auf dem e-mail Server selektieren (Suchfunktion) und diese dann im EML-Format speichern oder auf einen andern e-mail Account kopieren. Die wichtigsten Indy-Prozeduren sind: IMAPClientSrc.SelectMailBox('INBOX') SetLength(SearchInfo, 1); SearchInfo[0].SearchKey := skFrom; SearchInfo[0].Text := searchText; IMAPClientSrc.SearchMailBox(SearchInfo) FOR i := 0 TO High(IMAPClientSrc.MailBox.SearchResult) DO BEGIN MsgObject := TIdMessage.Create(nil); IMAPClientSrc.Retrieve(IMAPClientSrc.MailBox.Searc hResult[i], MsgObject) count := msgObject.FromList.Count; IF count = 1 THEN BEGIN s := msgObject.FromList.Items[0].Address; ShowMessage(s); END; (* Message (e-mail) auf anderen e-mail account kopieren *) res := IMAPClientDst.AppendMsg( 'INBOX', msgObject, msgObject.Headers, [] ); MsgObject.Free; END; Für Source und Destination wird je eine eigene Instanz von TIMAPClient verwendet. Die Absenderadresse (FROM) des Original-emails wird angezeigt. Das ist kein lauffertiger Code, nur die wesentlichen Methoden. |
AW: Schnelle Einführung in Indy
Naja, mit ICS habe ich noch keinen E-Mail Empfang realisiert, bisher nur Versand via SMTP.
Daher kann ich dazu nicht viel sagen. Wenn man bestimmte Prinzipien kapiert hat ist ICS recht leistungsfähig und die Mailingliste war auch oft hilfreich. Ich vermute, dass das neue Forum auf der EN Delphipraxis ähnlich hilfreich ist. Durch die durchgängig event basierte Umsetzung braucht man in ICS selten einen Thread. Grüße TurboMagic |
AW: Schnelle Einführung in Indy
Zitat:
Allerdings finde ich das Manual nicht, da die meisten Links diesbezüglich tot sind. Hat jemand einen funktionierenden Link? Ich möchte gerne zum allerersten mal mit Komponenten überhaupt arbeiten umd mir eine Email funktionalität zu schreiben, aber die meisten Tutorials die ich gefunden habe gehen eher auf die Verwendung mit Vorwissen ein und nicht wirklich von 0 an. |
AW: Schnelle Einführung in Indy
|
AW: Schnelle Einführung in Indy
Man kann im ersten Schritt nur den/die Header runterladen, das geht auch schnell, so mach ich das und dann speichere ich mir diesen Lokal und erst wenn man die Mail lesen möchte dann rufe ich diese mit UIDRetrieve der TIdImap Komponente ab.
Was mir aber noch nicht gelungen ist, und das finde ich auch spannend, wie man den Mail Text mit den Namen der Attachments bekommt ohne die Attachments selber downzuladen. Ich weiß das man mit den MessageParts die einzelnen Parts laden kann. Das wäre von der Performance sehr spannend, denn wenn sich mehrere MB an Attachments an der Mail befinden dauert das. Selbst wenn was ich auch schon versucht habe mit der TidMessage diese als File Lokal zu speichern und wieder zu laden, dauert das laden locker 1-2 Sekunden von einer SSD. Aber vielleicht habt ihr noch bessere Ideen (hoofe ich :-) ) |
AW: Schnelle Einführung in Indy
hallo,
vielleicht so
Delphi-Quellcode:
Gruß
for j := 0 to Pred(mymessage.MessageParts.count) do
if (mymessage.MessageParts.Items[j] is TIdAttachment) then ListBox1.Items.Add(TIdAttachment(mymessage.MessageParts.Items[j]).FileName); |
AW: Schnelle Einführung in Indy
Ja das geht so klar, aber dann sind die Attachments doch schon bereits runtergeladen und genau das soll doch für eine hohe Performance vermieden werden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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