【问题标题】:How to implement retry mechanism for node imap如何实现节点imap的重试机制
【发布时间】:2020-01-21 11:32:31
【问题描述】:

我正在使用 IMAP NPM 来接收电子邮件。我想知道在获取电子邮件信息时如何处理重试机制。官方页面没有任何相同的文档

代码成功获取电子邮件信息。我试图手动实现重试机制,但由于涉及许多事件回调,所以事情很艰难。例如

有没有人尝试过这种情况?我的代码 sn-p 如下所示

    imap.once('ready', function() {
      openInbox(function(err, box) {
      if (err) throw err;
      var f = imap.seq.fetch('1:3', {
      bodies: 'HEADER.FIELDS (FROM TO SUBJECT DATE)',
      struct: true
    });

在上述情况下,我想再次调用 openInbox 函数重试,而不是抛出错误。但它给出了错误。

【问题讨论】:

  • 请显示您想要重试的代码,并且您是否有您正在寻找的特定错误?您认为这里有必要重试的具体原因吗?
  • 代码与我从 NPM Imap 站点尝试的代码相同。我需要重试,因为我需要处理 MailServer 暂时关闭的情况,我需要重试 5 次然后返回错误。例如如果在函数 openbox 内的代码中,如果流程出错,那么我想重试 openbox 调用。我想我需要再次拨打电话。
  • 如果您希望人们在这里帮助您,您必须发布您的代码的相关部分。我们不会猜测您的代码是什么。这就是它的工作原理。
  • 在上面的帖子中更新。
  • 重试的级别必须高于您显示的级别。如果正确的 IMAP 命令失败,那么您可能必须断开连接并重新连接。任何合理的 IMAP 服务器都不应该暂时使命令失败,然后再恢复。

标签: node.js imap node-imap


【解决方案1】:

我使用“async.retry”来满足我的要求。为 IMAP 及其功能制作类。在一种称为 IMAP 功能的方法中,然后使用异步调用此方法。

【讨论】:

    【解决方案2】:

    这里无法重试,因为有很多回调。您需要再次拨打电话。最好的办法是让父代码调用此逻辑并将其循环 X 次直到成功,否则返回错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 2023-03-09
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多