【问题标题】:Mail-listener2 - Connection endingMail-listener2 - 连接结束
【发布时间】:2017-09-11 10:48:45
【问题描述】:

tl;dr:Mail-listener2 似乎超时,我想继续收听电子邮件,而不需要重新启动我的脚本。

我在我的 node.js 项目中使用 mailer-listerner2 包 (https://github.com/chirag04/mail-listener2/)。我想不断收听到达特定收件箱的电子邮件,然后解析这些电子邮件以进行进一步处理。

我已经建立了连接并且我的解析工作正常,但是我看到 imap 连接似乎超时,或者至少对到达的新电子邮件没有响应。

由于 mail-listener2 包依赖于 imap npm 包,我查看了代码并尝试减少 IDLE 计时器,以便它每 10 秒而不是每 10 秒向 imap (gmail) 服务器发送一次请求30 分钟。

这确实改善了情况,但是今天早上醒来检查日志时,我看到以下内容:

<= 'IDLE OK IDLE terminated (Success)'
=> 'IDLE IDLE'
<= '+ idling'
=> DONE
<= 'IDLE OK IDLE terminated (Success)'
=> 'IDLE IDLE'
<= '+ idling'
[connection] Ended
[connection] Closed

连接结束并关闭似乎来自核心 imap 模块。我认为发送 IDLE 检查可以确保不会发生断开连接,但正如您所见,情况并非如此。

我也尝试过查看 Noop,但它似乎会导致邮件被阅读两次的其他问题。

我知道如果我的计时器太低,例如每隔几秒钟,由于调用阻塞服务器响应,这可能会导致邮件不断被解析,这可能就是我看到上面的 Noop 问题的原因。

不想继续尝试这个,我想知道其他人是否遇到了这个问题并克服了?

【问题讨论】:

  • 如果连接关闭,为什么不尝试重新连接?连接关闭的原因有很多。
  • 是的 - 我试过了,但似乎没有用:mailListener.on('server:disconnected', () => { console.log('imapDisconnected'); mailListener.stop() ; mailListener.start(); });
  • 看起来好像其他人也有同样的问题,并为我重新启动 github.com/waqassiddiqi/mail-listener2/commit/…
  • 您应该处理重新连接,或者至少使用 foreverpm2 之类的东西来保持脚本运行,即使它失败了。您可以发布您传递给邮件侦听器的参数吗?
  • 是的,看起来唯一有意义的变化是超时和调用重启,也许你可以使用它

标签: node.js email gmail imap


【解决方案1】:

对于任何感兴趣的人 - 我已经将一堆 mail-listener2 fork 放在一起。其中一些已经解决了重新连接问题,因此我将其稍微重构为单个实现。我还整理了一些与此问题无关的其他内容。

https://www.npmjs.com/package/mail-listener-fixed

https://github.com/Hardware-Hacks/mail-listener-fixed/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 2018-03-14
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多