2011-01-10 6 views
0

Ich verwende OpenPop.net in meiner Anwendung. Was diese Anwendung macht ist, dass sie E-Mails von einem pop3-Konto herunterlädt, speichert alle Anhänge (CSV-Dateien) und verarbeitet sie. Diese Verarbeitung benötigt viel Zeit. Ich bin diese Ausnahme bekommen, die ich nicht in der Lage bin, um herauszufinden:OpenPop.Net Exception

Exception message: OpenPop.Pop3.Exceptions.PopServerException: The stream used to retrieve responses from was closed 
    at OpenPop.Pop3.Pop3Client.IsOkResponse(String response) 
    at OpenPop.Pop3.Pop3Client.SendCommand(String command) 
    at OpenPop.Pop3.Pop3Client.DeleteMessage(Int32 messageNumber) 

Am Ende der CSV-Verarbeitung werden die Mails vom POP3-Konto gelöscht. Ich glaube, dass dies die Ausnahme ist.

Antwort

1

Sie haben wirklich zwei Probleme hier. Eine besteht darin, dass Sie eine große Verarbeitungsmenge verarbeiten, während Sie mit dem POP3-Server verbunden sind. Wenn Sie zu lange im Leerlauf sind, trennt der Server Sie einfach, um Ressourcen zu sparen. Was Sie tun sollten, ist eine E-Mail abrufen, die Anhänge verarbeiten und dann erneut verbinden, um die nächste zu holen. Sie können auch alle Anhänge abrufen und diese dann offline verarbeiten.

Zweitens denke ich, dass Sie eine Verbindung zu einem Google Mail-Konto herstellen. Gmail hat einige merkwürdige Eigenschaften. A thread versucht, diese Merkmale zu finden. Eine davon ist, dass Sie nach dem Abrufen einer E-Mail in der nächsten POP3-Sitzung mit dem Server nicht verfügbar sind. Sie können eine Verbindung mit einem special username herstellen, wo Sie recent: vor Ihrem normalen Benutzernamen anhängen. Dadurch werden Ihnen die E-Mails angezeigt, die Sie in den letzten 30 Tagen erhalten haben, obwohl sie in einer früheren POP3-Sitzung gezeigt wurden.

Ich hoffe, es hilft.

0

Es klingt, als würde etwas versuchen, einen bereits geschlossenen Stream zu lesen. Bearbeitest du die Streams überhaupt oder ist dies komplett intern in der API? Wenn Sie sie überhaupt behandeln, besteht die Möglichkeit, dass Sie die Streams schließen (dies passiert häufig, wenn jemand StreamReader verwendet, die meisten Leute wissen nicht, dass das Schließen des StreamReader auch den zugrunde liegenden Stream schließt).

+0

Ich handle keinen Stream. Obwohl ich eine Option für Stream in der Connect-Methode sehe, die ich verwende. – Sidharth

+0

Was passierst du für diesen Stream? –

+0

ich benutze diesen Konstruktor – Sidharth