Пример программы на странице github для imap в режиме бездействия сбрасывает соединение, установленное партнером через 9 минут при подключении к серверу gmail imap.
Запуск консольного приложения dotnet core на raspberry Pi 3, подключенного к мобильной точке доступа в Интернет
Код отлично работает для любой другой сети или ПК.
Он не работает только когда малина подключена к мобильной точке доступа
Код отлично работает при первом подключении. Это только разрывает и сбрасывает соединение, установленное узлом на этой единственной функции
private void IdleLoop(object state) {
IdleState idle = (IdleState) state;
lock (idle.Client.SyncRoot) {
while (!idle.IsCancellationRequested) {
using (CancellationTokenSource timeout = new CancellationTokenSource()) {
using (Timer timer = new Timer(9 * 60 * 1000)) {
timer.Elapsed += (sender, e) => timeout.Cancel();
timer.AutoReset = false;
timer.Enabled = true;
try {
idle.SetTimeoutSource(timeout);
if (idle.Client.Capabilities.HasFlag(ImapCapabilities.Idle)) {
//TODO ERROR
idle.Client.Idle(timeout.Token, idle.CancellationToken);
}
else {
Logger.Log("Issuing NoOp command to IMAP servers...");
idle.Client.NoOp(idle.CancellationToken);
WaitHandle.WaitAny(new[] { timeout.Token.WaitHandle, idle.CancellationToken.WaitHandle });
Logger.Log("NoOp completed!");
}
}
catch (OperationCanceledException) {
break;
}
catch (ImapProtocolException) {
break;
}
catch (ImapCommandException) {
break;
}
finally {
idle.SetTimeoutSource(null);
}
}
}
}
}
}