我对 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,但也是在这个时间之后,仍然冻结。是否有其他超时或其他原因?
在现有互联网连接下一切正常。
答案 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();
}