MailKit 和同一邮件帐户上的多个客户端

MailKit and mulitple clients on same mail account

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

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

当我使用 Exchange 同时访问大约 5 个以上的客户端时,似乎会出现错误,并且响应时会出现许多不同的错误,例如: "The IMAP server replied to the 'COPY' command with a 'NO' response." "The IMAP server replied to the 'EXPUNGE' command with a 'NO' response."

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

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

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