当前位置: 首页 > 知识库问答 >
问题:

Ruby-即使每25分钟重新连接一次,Imap服务器连接也会在2天后断开

蒋茂材
2023-03-14

登录到IMAP服务器:

imap = Net::IMAP.new("imap.gmail.com")
imap.login("username", "password")
imap.select("inbox")

然后我使用IMAP IDLE在邮件到达时提取邮件。由于imap服务器连接在30分钟后自动断开,我每25分钟重新连接一次imap服务器。

所有这些工作正常,直到它持续超过48小时。当我这样做时,我得到以下错误imap.logout

错误消息:

IOError closed stream - ["org/jruby/ext/openssl/SSLSocket.java:664:in `syswrite'",
"/opt/jruby-1.7.6/lib/ruby/shared/jopenssl19/openssl/buffering.rb:318:in `do_write'",
"/opt/jruby-1.7.6/lib/ruby/shared/jopenssl19/openssl/buffering.rb:415:in `print'",
/opt/jruby-1.7.6/lib/ruby/1.9/net/imap.rb:1210:in `put_string'", 
"/opt/jruby-1.7.6/lib/ruby/1.9/net/imap.rb:1182:in `send_command'", 
"/opt/jruby-1.7.6/lib/ruby/1.9/monitor.rb:211:in `mon_synchronize'", 
"/opt/jruby-1.7.6/lib/ruby/1.9/monitor.rb:210:in `mon_synchronize'", 
"/opt/jruby-1.7.6/lib/ruby/1.9/net/imap.rb:1177:in `send_command'", 
"/opt/jruby-1.7.6/lib/ruby/1.9/net/imap.rb:352:in `logout'"

imap对象:

#,raw\u data=“*OK Gimap ready for requests from 54.242.66.175 v74mb152689693qgv\r\n”

有人能解释为什么会这样吗?

共有1个答案

井唯
2023-03-14

如果在调用logout方法时与Imap服务器的连接已经关闭,则会收到此错误。

您可以通过在通话前检查连接来防止这种情况

<代码>imap。除非imap,否则注销。断开连接

希望这对你有帮助。

 类似资料:
  • 问题内容: 我将Go(Golang)1.4.2和Gorilla WebSockets一起使用在nginx 1.4.6反向代理后面。打开页面大约一分钟后,我的WebSocket断开连接。在Chrome和Firefox上会发生相同的行为。 最初,我在使用WebSockets连接服务器和客户端时遇到问题。然后,我读到我需要调整我的nginx配置。这就是我所拥有的。 我的Go代码基本上是在回显客户的消息。

  • 我在一组Docker容器中使用Confluent 3.2,其中一个容器运行kafka connect worker。 出于我尚不清楚的原因,我的四个连接器中的两个——具体来说,是hpgram sl的MongoDB接收器连接器——停止工作。我能够识别出主要问题:连接器没有分配任何任务,这可以通过调用来看出。另外两个连接器(相同类型)没有受到影响,并且正在愉快地产生输出。 我尝试了三种不同的方法通过

  • 问题内容: 我正在使用node.js和socket.io构建一个小型原型。一切运行正常,我面临的唯一问题是我的node.js连接将断开连接,并且我被迫刷新页面以重新建立连接并重新运行。 有一种方法可以在断开事件触发后立即重新建立连接? 据我所知,这是一个普遍的问题。因此,我正在寻找解决该问题的最佳实践方法:) 非常感谢,丹 问题答案: 编辑:Socket.io已内置支持现在 当我使用socket.

  • 我在运行使用Netty的服务时遇到了问题。它启动和工作正常,但只有一次。在此之后,不接受任何连接(它们将立即被删除)。 当我第一次使用(示例端口,随便什么)连接到服务器时,一切正常: 客户端会话: 服务器日志: --编辑2-- 只要连接处于活动状态,服务器就可以正常工作--在关闭连接之前,我可以轻松地交换请求/响应。 不要被IP地址迷惑,这是一个转发到Docker的本地端口,应用程序就是在那里启动

  • 使用RxJS和Angular 2处理服务器重新连接的最佳方法是什么? 控制台中的结果: 如果我把这行替换掉.. 与 ...ServiceOnline仅在http服务返回成功响应且当前联机状态为false(断开连接)时发出另一个值: 所以TakeTaile应该有效。我在这里误解/遗漏了什么? 我是RxJS的新手--任何关于改进这段代码中实现的其他指针也将非常感谢...

  • 启动mysql服务: sudo service mysql start 停止mysql服务: sudo service mysql stop 要连接到服务器,我们通常需要提供MySQL的用户名来触发mysql,很可能,还需要密码。如果你的服务器运行在一个其他的机器上,你还需要指定主机名。联系管理员来找到连接参数(例如主机名,用户名和密码),当你知道了正确的参数后,你可以像下面那样连接: she