0

我在我的应用程序中使用 OpenPop.net。此应用程序的作用是从 pop3 帐户下载邮件,保存所有附件(CSV 文件)并处理它们。这个处理需要很多时间。我得到了这个我无法弄清楚的异常:

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)

在处理 CSV 结束时,邮件将从 pop3 帐户中删除。我相信这就是发生此异常的地方。

4

2 回答 2

1

你在这里真的有两个问题。一是您在连接到 POP3 服务器时进行了大量处理。当您空闲时间过长时,服务器会简单地断开您的连接以节省资源。您应该做的是获取一封电子邮件,处理附件,然后重新连接以获取下一封电子邮件。您还可以获取所有附件,然后离线处理它们。

其次,我猜你正在连接到一个 gmail 帐户。Gmail 有一些奇怪的特征。一个线程试图找到这些特征。其中之一是,当您提取了一封电子邮件时,它在与服务器的下一个 POP3 会话中将不可用。您可以使用特殊的用户名recent:进行连接,您可以在普通用户名前面附加。这将向您显示过去 30 天内收到的电子邮件,尽管之前的 POP3 会话已显示。

希望能帮助到你。

于 2011-01-15T10:10:37.927 回答
0

听起来有些东西正在尝试读取已经关闭的流。您是在处理流,还是完全在 API 内部完成?如果您正在处理它们,那么您有可能正在关闭流(如果有人使用 ,这通常会发生StreamReader,大多数人没有意识到关闭StreamReader也会关闭底层流)。

于 2011-01-10T14:16:51.763 回答