IMAP schmiert bei 8993 Mails ab
Hi,
ich habe ein Problem mit IMap. Ich möchte alle ungelesen Mails auf gelesen setzen. Leider finde ich nirgendwo wie ich das machen muss. Wie ich die UIDs von diesen Mails bekomme habe ich gefunden. Hier im Forum und im Netz. Ich hänge den Code mal hier dran. Dann ist da noch ein Problem. Ich habe einen Mailserver wo 8993 Mails ungelesen sind. Wenn ich SetLength(SearchInfo, 1) setze dann schmiert er mit der Meldung 'Max line length exceeded.' ab. Setze ich SetLength(SearchInfo, 20000) dann läuft er zwar weiter aber ich bekomme keine ergebnisse. IMAPClient.MailBox.SearchResult ist leer.
Delphi-Quellcode:
Nun zu meinen zwei Fragen. Wie setze ich die Mail auf gelesen? Warum klappt es nicht wenn 8993 Mails im Postfach sind (ungelesen).
procedure TestUnSeen(const UserName, Password,Host: string;var BodyTexts: TStringList);
var IMAPClient :TIdIMAP4; SearchResult :TIdIMAP4SearchRecArray; OpenSSLHandler:TIdSSLIOHandlerSocketOpenSSL; SearchInfo :TIdIMAP4SearchRecArray; msgID :Integer; i :Integer; begin IMAPClient := TIdIMAP4.Create(nil); OpenSSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); try OpenSSLHandler.SSLOptions.Method := sslvTLSv1_2; // sslvSSLv3; IMAPClient.IOHandler:=OpenSSLHandler; IMAPClient.Host:=Host; IMAPClient.Port:=993; IMAPClient.UseTLS:=utUseImplicitTLS; IMAPClient.Username:=UserName; IMAPClient.Password:=Password; IMAPClient.Connect; if IMAPClient.SelectMailBox('INBOX') then begin SetLength(SearchInfo, 1); SearchInfo[0].SearchKey := skUnseen; IMAPClient.UIDSearchMailBox(SearchInfo); for i:=0 to High(IMAPClient.MailBox.SearchResult) do begin msgID := IMAPClient.MailBox.SearchResult[i]; // Ich weiß nicht was ich hier machen muss.... end; end; finally IMAPClient.Disconnect; OpenSSLHandler.Free; IMAPClient.Free; end; end; Vielen dank im Voraus |
AW: IMAP Mail auf gelesen setzen
Ups,
tut mir leid. Ich habe gemerkt das wenn man die Mail lädt die gelesen ist.
Delphi-Quellcode:
IMAPClient.UIDRetrieve(IntToStr(msgID),MsgObject);
Bleibt nur noch die Frage, warum schmiert der bei vielen Mails ab. |
AW: IMAP schmiert bei 8993 Mails ab
Wo, wann und mit welcher Fehlermeldung erfolgt die Exception? Bei der wievielten Mail?
|
AW: IMAP schmiert bei 8993 Mails ab
..wenn Du die for Schleife anders herum laufen Lassen würdest?
Grüsse Klaus |
AW: IMAP schmiert bei 8993 Mails ab
Hast Du Dir mal die IMAP-Demo unter https://github.com/IndySockets/Indy10Demos angeschaut?
Und dann mal die Beschreibung zur Fehlermeldung "Max line length exceeded" tidimap Der Fehler hat nichts mit der Menge der Mails zu tun, sondern bezieht sich auf die Zeilenlänge einer einzelnen Mail. Würde da mal zur Ursachenforschung innerhalb der For-Schleife noch 'ne Fehlerbehandlung einbauen, dann bestehen durchaus Aussichten, die fehlerverursachende Mail herauszufinden. Im schlimmsten Fall wird die fehlerverursachende Mail halt "einfach überlesen" ;-) |
AW: IMAP schmiert bei 8993 Mails ab
Hi,
erstmal danke für die Antworten. Aber der Fehler passiert bei
Delphi-Quellcode:
IMAPClient.UIDSearchMailBox(SearchInfo);
Das heißt er kommt gar nicht zur Schleife.
Delphi-Quellcode:
High(IMAPClient.MailBox.SearchResult)
Selbst wenn das nicht passieren würde, wäre dieser Wert 0. Also selbst dann würde er die Schleife nicht durchlaufen. Setze ich SetLength(SearchInfo, 20000); dann kommt kein Fehler, aber der SearchResult wert bleibt 0. Achso, Indy Version ist die 10.6.2.0 |
AW: IMAP schmiert bei 8993 Mails ab
Setze beim
Delphi-Quellcode:
den Wert für
OpenSSLHandler
Delphi-Quellcode:
bitte deutlich nach oben.
MaxLineLength
Delphi-Quellcode:
setzt Du bitte auf
MaxLineAction
Delphi-Quellcode:
. Wird's damit besser?
maSplit
|
AW: IMAP schmiert bei 8993 Mails ab
Hi, danke für den Tip. MaxLineLength habe ich nun auf 163840 (Original * 10) stehen. Und MaxLineAction auf masplit. Damit klappt es.
Vielen vielen dank. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 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