MailKit ConnectAsync 在没有互联网连接的情况下冻结

时间:2021-05-10 13:57:00

标签: c# mailkit

我对 MailKit 有点厌烦,但如果尝试在没有互联网连接(拔出/插入)的情况下连接 ImapClient.ConnectAsync(...),那么 ConnectAsync 会冻结。

我正在尝试以下示例 - ImapIdleExample: https://github.com/jstedfast/MailKit/blob/master/Documentation/Examples/ImapIdleExample.cs

在第 103 行 async Task WaitForNewMessagesAsync () 内,我在 9 分钟内断开了互联网连接,9 分钟后我收到了 IOException(总是导致客户端断开连接)。

在第 64 行 async Task ReconnectAsync () 客户端未连接 client.IsConnected 为假,执行以下行,第 67 行 await client.ConnectAsync (host, port, sslOptions, cancel.Token)

就是这样,没有更多的事情发生。此外,当我重新连接到互联网时,ConnectAsync 仍然处于冻结状态。

我正在连接端口 993 和 SecureSocketOptions SslOnConnect。 ImapClient.Timeout 值是 120000,但也是在这个时间之后,仍然冻结。是否有其他超时或其他原因?

在现有互联网连接下一切正常。

1 个答案:

答案 0 :(得分:0)

ImapIdleExample 中的示例运行良好,但如果我断开计算机与 Internet 的连接,则会收到未处理的异常:

System.Net.Sockets.SocketException with SocketErrorCode = HostNotFound

我已经更新了 async Task WaitForNewMessagesAsync ()async Task FetchMessageSummariesAsync (bool print) 中的 catch 块:

catch (Exception exception)
{
    await Task.Delay(new TimeSpan(0, 1, 0), CancelToken.Token);
    await ReconnectAsync();
}