同一邮件帐户

时间:2016-04-07 13:19:42

标签: c# email exchange-server mailkit

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

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

一旦我使用Exchange击中了大约5​​个以上的客户端,并且响应时出现了很多不同的错误,就会出现错误: “IMAP服务器回复'COPY'命令,回复'NO'。” “IMAP服务器回复'EXPUNGE'命令,回复'NO'。”

当我移动邮件时,我会遵循以下顺序:

  1. 使用新的ImapClient
  2. 连接并验证客户端
  3. INBOX和FolderA的GetFolderAsync,然后等待响应
  4. 使用ReadWrite打开带有OpenSync()的INBOX,然后等待任务。
  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
  11. 关闭IMAP文件夹

1 个答案:

答案 0 :(得分:2)

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