Skip to main content
 首页 » 编程设计

c#之如何在 MailKit ImapClient 处于空闲状态时使用它来读取消息

2024年01月26日36傻小

我正在使用 IdleAsync 来获取有关新电子邮件的通知。

我想在新消息到达时收到通知,然后阅读消息,但是当我尝试阅读消息时,出现异常,提示 ImapClient 处于空闲状态。

我是否需要创建另一个 ImapClient 或者我们是否可以使用相同的客户端来读取消息而不停止接收新消息的通知?

请您参考如下方法:

正如 Nameless One 所指出的,MailKit 的 Idle() 和 IdleAsync() 方法采用“完成”CancellationToken,可用于结束 IDLE 状态(当您取消“完成” token 时,它将发送 DONE 命令结束 IDLE 状态)。

完成后,您可以获取消息并照常继续。

有些人做的另一种选择是拥有 2 个 ImapClients - 一个用于 Idle(),另一个用于获取消息。