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."
当我移动邮件时,我会执行以下顺序:
- 使用新的 ImapClient
- 连接并验证客户端
- 获取INBOX和FolderA的FolderAsync,然后等待响应
- 用 OpenSync() 和 ReadWrite 打开收件箱,等待任务。
- 使用 FetchAsync() 获取 INBOX,循环遍历结果以根据 MessageID 找到想要的 UID
- 正在调用 MoveToAsync() 将基于 uid 的邮件移动到 FolderA,并等待
- FolderA.SetFlagAsync() 使用新的 UID,并使用 SEEN
标记邮件
- 等待 6. & 7.
- INBOX.SetFlagAsync()用之前的UID,邮件标记为DELETED,等待操作
- 正在使用 INBOX.CloseAsync 和 FolderA.CloseAsync
关闭 IMAP 文件夹
没有定义 IMAP 服务器允许的最大客户端数的标准。我读到 Thunderbird 最多使用 5 个并发连接(这可能表明他们发现这对大多数 IMAP 服务器都运行良好),所以这可以解释你所看到的。
您可以连接到一个邮件帐户的并发客户端数量是否有任何限制?
我有一个应用程序可以根据每个请求打开一个新的 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."
当我移动邮件时,我会执行以下顺序:
- 使用新的 ImapClient
- 连接并验证客户端
- 获取INBOX和FolderA的FolderAsync,然后等待响应
- 用 OpenSync() 和 ReadWrite 打开收件箱,等待任务。
- 使用 FetchAsync() 获取 INBOX,循环遍历结果以根据 MessageID 找到想要的 UID
- 正在调用 MoveToAsync() 将基于 uid 的邮件移动到 FolderA,并等待
- FolderA.SetFlagAsync() 使用新的 UID,并使用 SEEN 标记邮件
- 等待 6. & 7.
- INBOX.SetFlagAsync()用之前的UID,邮件标记为DELETED,等待操作
- 正在使用 INBOX.CloseAsync 和 FolderA.CloseAsync 关闭 IMAP 文件夹
没有定义 IMAP 服务器允许的最大客户端数的标准。我读到 Thunderbird 最多使用 5 个并发连接(这可能表明他们发现这对大多数 IMAP 服务器都运行良好),所以这可以解释你所看到的。