![]() |
Schnelle Einführung in Indy
Hallo zusammen,
ich habe eine erste (sogar funktionierende) Anwendung mit Indy geschrieben. Dies gelang mit Hilfe von Delphi-Praxis und Stackoverflow. Das Indy-Manual ist über 3000 Seiten lang. Habe keine Lust mich da durch die Details zu lesen. Ich suche eine einfache Einstiegsmöglichkeit. Wo finde ich einen gut strukturierten Überbau ? Kann da jemand helfen ? Vielen Dank Woran ich zurzeit gerade bin: Damit ich nicht tausende emails die beim e-mail Provider liegen zuerst runterholen muss möchte ich 1. Selektionen auf dem e-mail Server vornehmen 2. Auch Suchfunktionen nach Möglichkeit dem e-mail Server überlassen und dann nur noch diejenigen e-mails runterladen die mich interessieren. Bis anhin scanne ich immer alle Files, das dauert enorm lange. Gruss |
AW: Schnelle Einführung in Indy
Zitat:
indy tutorial delphi Das gibt eine Reihe von Hits, die ganz gut aussehen. Auf dem alten Indy-Site findet sich auch eine Sammlung von Links auf diverse Artikel über Indy, vielleicht ist auch da was nützliches dabei. ![]() |
AW: Schnelle Einführung in Indy
Zitat:
|
AW: Schnelle Einführung in Indy
Ich verwende IMAP (TIdIMAP4).
Wie gesagt, ich möchte 1. Selektionen auf dem e-mail Server vornehmen 2. Auch Suchfunktionen nach Möglichkeit dem e-mail Server überlassen (vorerst im Header: also Titel, Absender, Empfänger.., später dann auch mal Inhalt oder angehängte Files) Aber beginnen wir mal einfach. Danke für Lösungsansätze und geeignete Funktionen von Indy. |
AW: Schnelle Einführung in Indy
Hallo,
Zitat:
Dann entfällt natürlich die Option, in der E-Mail (Body, Attachments) zu suchen. Nach dem Connect steht in den Options drin, ob der jeweilige Server das unterstützt. Das sollten aber mittlerweile alle tun. |
AW: Schnelle Einführung in Indy
@hoika
Das wende ich bereits jetzt an. Allerdings dauert das bei 30000 bis 40000 E-mails leider viel zu lange. Pro Sekunde werden etwas 15 e-mail headers bereitgestellt. Die Selektion auf dem e-mail Server ist grundsätzlich viel schneller. Ich bin also sehr daran interessiert wie das (mit Indy) möglich ist. Gruss |
AW: Schnelle Einführung in Indy
Hallo,
dann steig um auf IMAP. Dort kannst Du mit Flags wie "gelesen" arbeiten. Dann dauert es einmal lange (zum Setzen der alten Nachrichten auf "gelesen") und dann ist es schnell (er) ![]() Zitat:
such doch mal dort, was mit POP3 noch alles geht. |
AW: Schnelle Einführung in Indy
Zitat:
Zitat:
|
AW: Schnelle Einführung in Indy
Hallo,
schau dir den Link an bzw. das RFC. Mit IMAP kann man auf dem Server suchen. |
AW: Schnelle Einführung in Indy
Zitat:
"Ich fahre mit der Bahn." - "Steig doch auf die Bahn um!" "Ich ernähre mich vegan." - "Steig doch auf vegane Ernährung um!" "Ich programmiere mit Delphi." - "Steig doch um auf Delphi!" |
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.
|
AW: Schnelle Einführung in Indy
Zitat:
|
AW: Schnelle Einführung in Indy
Es wird eben entweder nur der MailHeader (der erste Teil der Mail-Datei, bis zur ersten Leerzeile) oder die GANZE Mail runtergeladen ... und da sind dann auch alle Anhänge mit enthalten, als Teil/Part innerhalb der Mail-Datei.
> Header, siehe Mail-Header oder HTTP-Header, wobei hier der Server den Abbruch vornimmt, indem man ihm vorher mitteilt, dass man nicht mehr haben möchte Nicht mit Indy, aber theoretisch könnte man den laufenden Download während der Übertragung abbrechen und so die letzten Bytes/Parts nicht runterladen (so als wenn man beim Laden einer Webseite oder beim Runterladen von FTP auf Stopp drückt), aber offiziell ist sowas natürlich nicht vorgesehn. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 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