IMAP Improvements (#558)
* Fixing an issue where scrollviewer overrides a part of template in mail list. Adjusted zoomed out header grid's corner radius. * IDLE implementation, imap synchronization strategies basics and condstore synchronization. * Adding iCloud and Yahoo as special IMAP handling scenario. * iCloud special imap handling. * Support for killing synchronizers. * Update privacy policy url. * Batching condstore downloads into 50, using SORT extension for searches if supported. * Bumping some nugets. More on the imap synchronizers. * Delegating idle synchronizations to server to post-sync operations. * Update mailkit to resolve qresync bug with iCloud. * Fixing remote highest mode seq checks for qresync and condstore synchronizers. * Yahoo custom settings. * Bump google sdk package. * Fixing the build issue.... * NRE on canceled token accounts during setup. * Server crash handlers. * Remove ARM32. Upgrade server to .NET 9. * Fix icons for yahoo and apple. * Fixed an issue where disabled folders causing an exception on forced sync. * Remove smtp encoding constraint. * Remove commented code. * Fixing merge conflict * Addressing double registrations for mailkit remote folder events in synchronizers. * Making sure idle canceled result is not reported. * Fixing custom imap server dialog opening. * Fixing the issue with account creation making the previously selected account as selected as well. * Fixing app close behavior and logging app close.
This commit is contained in:
68
Wino.Services/SpecialImapProviderConfigResolver.cs
Normal file
68
Wino.Services/SpecialImapProviderConfigResolver.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
using Wino.Core.Domain.Entities.Shared;
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Accounts;
|
||||
|
||||
namespace Wino.Services
|
||||
{
|
||||
public class SpecialImapProviderConfigResolver : ISpecialImapProviderConfigResolver
|
||||
{
|
||||
private readonly CustomServerInformation iCloudServerConfig = new CustomServerInformation()
|
||||
{
|
||||
IncomingServer = "imap.mail.me.com",
|
||||
IncomingServerPort = "993",
|
||||
IncomingServerType = CustomIncomingServerType.IMAP4,
|
||||
IncomingServerSocketOption = ImapConnectionSecurity.Auto,
|
||||
IncomingAuthenticationMethod = ImapAuthenticationMethod.Auto,
|
||||
OutgoingServer = "smtp.mail.me.com",
|
||||
OutgoingServerPort = "587",
|
||||
OutgoingServerSocketOption = ImapConnectionSecurity.Auto,
|
||||
OutgoingAuthenticationMethod = ImapAuthenticationMethod.Auto,
|
||||
MaxConcurrentClients = 5,
|
||||
};
|
||||
|
||||
private readonly CustomServerInformation yahooServerConfig = new CustomServerInformation()
|
||||
{
|
||||
IncomingServer = "imap.mail.yahoo.com",
|
||||
IncomingServerPort = "993",
|
||||
IncomingServerType = CustomIncomingServerType.IMAP4,
|
||||
IncomingServerSocketOption = ImapConnectionSecurity.Auto,
|
||||
IncomingAuthenticationMethod = ImapAuthenticationMethod.Auto,
|
||||
OutgoingServer = "smtp.mail.yahoo.com",
|
||||
OutgoingServerPort = "587",
|
||||
OutgoingServerSocketOption = ImapConnectionSecurity.Auto,
|
||||
OutgoingAuthenticationMethod = ImapAuthenticationMethod.Auto,
|
||||
MaxConcurrentClients = 5,
|
||||
};
|
||||
|
||||
|
||||
public CustomServerInformation GetServerInformation(MailAccount account, AccountCreationDialogResult dialogResult)
|
||||
{
|
||||
CustomServerInformation resolvedConfig = null;
|
||||
|
||||
if (dialogResult.SpecialImapProviderDetails.SpecialImapProvider == SpecialImapProvider.iCloud)
|
||||
{
|
||||
resolvedConfig = iCloudServerConfig;
|
||||
|
||||
// iCloud takes username before the @icloud part for incoming, but full address as outgoing.
|
||||
resolvedConfig.IncomingServerUsername = dialogResult.SpecialImapProviderDetails.Address.Split('@')[0];
|
||||
resolvedConfig.OutgoingServerUsername = dialogResult.SpecialImapProviderDetails.Address;
|
||||
}
|
||||
else if (dialogResult.SpecialImapProviderDetails.SpecialImapProvider == SpecialImapProvider.Yahoo)
|
||||
{
|
||||
resolvedConfig = yahooServerConfig;
|
||||
|
||||
// Yahoo uses full address for both incoming and outgoing.
|
||||
resolvedConfig.IncomingServerUsername = dialogResult.SpecialImapProviderDetails.Address;
|
||||
resolvedConfig.OutgoingServerUsername = dialogResult.SpecialImapProviderDetails.Address;
|
||||
}
|
||||
|
||||
// Fill in account details.
|
||||
resolvedConfig.Address = dialogResult.SpecialImapProviderDetails.Address;
|
||||
resolvedConfig.IncomingServerPassword = dialogResult.SpecialImapProviderDetails.Password;
|
||||
resolvedConfig.OutgoingServerPassword = dialogResult.SpecialImapProviderDetails.Password;
|
||||
resolvedConfig.DisplayName = dialogResult.SpecialImapProviderDetails.SenderName;
|
||||
return resolvedConfig;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user