Files
Wino-Mail/Wino.Core/Services/ImapTestService.cs

53 lines
1.7 KiB
C#
Raw Normal View History

2024-04-18 01:44:37 +02:00
using System.IO;
using System.Threading.Tasks;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Integration;
2024-04-18 01:44:37 +02:00
namespace Wino.Core.Services
{
public class ImapTestService : IImapTestService
{
public const string ProtocolLogFileName = "ImapProtocolLog.log";
private readonly IPreferencesService _preferencesService;
private readonly IAppInitializerService _appInitializerService;
private Stream _protocolLogStream;
2024-04-18 01:44:37 +02:00
public ImapTestService(IPreferencesService preferencesService, IAppInitializerService appInitializerService)
{
_preferencesService = preferencesService;
_appInitializerService = appInitializerService;
}
private void EnsureProtocolLogFileExists()
2024-04-18 01:44:37 +02:00
{
// Create new file for protocol logger.
var localAppFolderPath = _appInitializerService.GetApplicationDataFolder();
2024-04-18 01:44:37 +02:00
var logFile = Path.Combine(localAppFolderPath, ProtocolLogFileName);
2024-04-18 01:44:37 +02:00
if (File.Exists(logFile))
File.Delete(logFile);
2024-04-18 01:44:37 +02:00
_protocolLogStream = File.Create(logFile);
}
2024-04-18 01:44:37 +02:00
public async Task TestImapConnectionAsync(CustomServerInformation serverInformation)
{
EnsureProtocolLogFileExists();
2024-04-18 01:44:37 +02:00
var clientPool = new ImapClientPool(serverInformation, _protocolLogStream);
2024-04-18 01:44:37 +02:00
using (clientPool)
2024-04-18 01:44:37 +02:00
{
// This call will make sure that everything is authenticated + connected successfully.
var client = await clientPool.GetClientAsync();
clientPool.Release(client);
2024-04-18 01:44:37 +02:00
}
}
}
}