1

您可以连接到一个邮件帐户的并发客户端数量是否有任何限制?

我有一个应用程序可以在每个请求上打开一个新的 ImapClient 。ImapClient 将打开 INBOX 和 FolderA,并通过 UID 将邮件从一个移动到另一个。多个客户端永远不会同时访问相同的邮件,但可能会同时移动同一帐户中的多个邮件。

一旦我使用 Exchange 同时击中大约 5 个以上的客户端,并以许多不同的错误作为响应,似乎就会发生错误:“IMAP 服务器以 'NO' 响应回复了 'COPY' 命令。” “IMAP 服务器以 'NO' 响应回复了 'EXPUNGE' 命令。”

当我移动邮件时,我执行以下顺序:

  1. 使用新的 ImapClient
  2. 连接并验证客户端
  3. 获取INBOX和FolderA的FolderAsync,然后等待响应
  4. 使用 OpenSync() 和 ReadWrite 打开收件箱,然后等待任务。
  5. 使用 FetchAsync() 获取 INBOX,遍历结果根据 MessageID 找到想要的 UID
  6. 调用 MoveToAsync() 将基于 uid 的邮件移动到 FolderA,并等待
  7. 具有新 UID 的 FolderA.SetFlagAsync(),并使用 SEEN 标记邮件
  8. 等待 6. 和 7.
  9. INBOX.SetFlagAsync() 使用之前的 UID,并用 DELETED 标记邮件,等待操作
  10. 使用 INBOX.CloseAsync 和 FolderA.CloseAsync 关闭 IMAP 文件夹
4

1 回答 1

2

没有定义 IMAP 服务器允许的最大客户端数量的标准。我读过 Thunderbird 最多使用 5 个并发连接(这可能表明他们发现这对大多数 IMAP 服务器都适用),所以这可以解释你所看到的。

于 2016-04-07T19:29:36.327 回答