我在我的应用程序中使用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帐户中删除。我相信这就是发生这种异常的地方。
答案 0 :(得分:1)
你这里真的有两个问题。 一个是在连接到POP3服务器时进行大量处理。当您闲置太久时,服务器将断开您的连接以节省资源。 您应该做的是获取一封电子邮件,处理附件,然后重新连接以获取下一封。您还可以获取所有附件,然后离线处理它们。
其次,我猜您正在连接到Gmail帐户。 Gmail有一些奇怪的特征。 A thread试图找到这些特征。其中之一是,当您提取电子邮件时,它将无法在与服务器的下一个POP3会话中使用。您可以使用special username进行连接,在普通用户名前添加recent:
。这将显示过去30天内收到的电子邮件,尽管已经显示在早期的POP3会话中。
希望它有所帮助。
答案 1 :(得分:0)
听起来有些东西试图读取已经关闭的流。您是在处理流,还是完全在API内部完成?如果你正在处理它们,你有可能关闭流(如果有人使用StreamReader
,这通常会发生,大多数人都没有意识到关闭StreamReader
也会关闭基础流)。