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

标签 c# email exchange-server mailkit

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

我有一个应用程序,它会根据每个请求打开一个新的 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. FolderA.SetFlagAsync() 使用新的 UID,并使用 SEEN 标记邮件
  8. 正在等待 6 号和 7 号。
  9. INBOX.SetFlagAsync() 使用之前的 UID,并将邮件标记为 DELETED,等待操作
  10. 使用 INBOX.CloseAsync 和 FolderA.CloseAsync 关闭 IMAP 文件夹

最佳答案

没有标准定义 IMAP 服务器允许的最大客户端数量。我读到 Thunderbird 最多使用 5 个并发连接(这可能表明他们发现这对于大多数 IMAP 服务器来说效果很好),因此这可能可以解释您所看到的内容。

关于c# - MailKit 和同一邮件帐户上的多个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36477474/

相关文章:

c# - session 预约是如何连接的以及如何使用此连接?

c# - 通过C#执行多语句MySql

html - 如何定位电子邮件客户端 (Microsoft Outlook) 中的特定链接?

Python:脚本发送的邮件被 Gmail 标记为垃圾邮件

java - 如何发送带有纯文本和 HTML 文本的邮件,以便每个邮件阅读器都可以选择适合它的格式?

Javamail NTLM 身份验证失败

powershell - 如何使用PowerShell管道有效地节省资源?

c# - 如何更改 DataContractSerializer 文本编码?

c# - 将字符串转换为指针语法

c# - 使用异常而不是冗长的空检查是否可以接受?