コード例 #1
0
        // Token: 0x060000F6 RID: 246 RVA: 0x00004394 File Offset: 0x00002594
        internal ConnectResponse Execute(ConnectRequest connectRequest, IServerCapabilities requiredCapabilities)
        {
            ConnectResponse connectResponse = this.Execute(connectRequest);

            connectResponse.UserSmtpAddressString = base.EasConnectionSettings.EasEndpointSettings.UserSmtpAddressString;
            if (connectResponse.ConnectStatus != ConnectStatus.Success || requiredCapabilities == null)
            {
                return(connectResponse);
            }
            OptionsCommand  optionsCommand  = new OptionsCommand(base.EasConnectionSettings);
            OptionsResponse optionsResponse = optionsCommand.Execute(new OptionsRequest());

            connectResponse.OptionsResponse = optionsResponse;
            EasServerCapabilities easServerCapabilities = optionsResponse.EasServerCapabilities;

            if (easServerCapabilities.Supports(requiredCapabilities))
            {
                base.EasConnectionSettings.ExtensionCapabilities = optionsResponse.EasExtensionCapabilities;
                return(connectResponse);
            }
            IEnumerable <string> values = requiredCapabilities.NotIn(easServerCapabilities);
            string text = string.Join(", ", values);

            base.EasConnectionSettings.Log.Debug("ConnectCommand, missing capabilities: '{0}'.", new object[]
            {
                text
            });
            throw new MissingCapabilitiesException(text);
        }
コード例 #2
0
        // Token: 0x06000040 RID: 64 RVA: 0x000031E4 File Offset: 0x000013E4
        public OperationStatusCode TestLogon(ImapServerParameters serverParameters, ImapAuthenticationParameters authenticationParameters, IServerCapabilities capabilities)
        {
            base.CheckDisposed();
            this.ThrowIfConnected();
            OperationStatusCode result;

            try
            {
                this.ConnectAndAuthenticate(serverParameters, authenticationParameters, capabilities);
                result = OperationStatusCode.Success;
            }
            catch (ImapConnectionException)
            {
                result = OperationStatusCode.ErrorCannotCommunicateWithRemoteServer;
            }
            catch (ImapAuthenticationException ex)
            {
                if (ex.InnerException == null)
                {
                    result = OperationStatusCode.ErrorInvalidCredentials;
                }
                else
                {
                    result = OperationStatusCode.ErrorInvalidRemoteServer;
                }
            }
            catch (ImapCommunicationException)
            {
                result = OperationStatusCode.ErrorInvalidRemoteServer;
            }
            catch (MissingCapabilitiesException)
            {
                result = OperationStatusCode.ErrorUnsupportedProtocolVersion;
            }
            finally
            {
                if (this.IsConnected())
                {
                    ImapConnectionCore.LogOff(this.ConnectionContext, null, null);
                }
            }
            return(result);
        }
コード例 #3
0
        // Token: 0x0600003F RID: 63 RVA: 0x0000317C File Offset: 0x0000137C
        public void ConnectAndAuthenticate(ImapServerParameters serverParameters, ImapAuthenticationParameters authenticationParameters, IServerCapabilities capabilities = null)
        {
            base.CheckDisposed();
            this.ThrowIfConnected();
            ImapConnectionContext imapConnectionContext = this.ConnectionContext;

            imapConnectionContext.AuthenticationParameters = authenticationParameters;
            imapConnectionContext.ServerParameters         = serverParameters;
            imapConnectionContext.NetworkFacade            = this.CreateNetworkFacade.Value(this.ConnectionContext, serverParameters);
            AsyncOperationResult <DBNull> asyncOperationResult = ImapConnectionCore.ConnectAndAuthenticate(this.ConnectionContext, capabilities, null, null);

            this.ThrowIfExceptionNotNull(asyncOperationResult.Exception);
        }
 partial void ServerCapabilities_SetCondition(ref IIServerDataProvider instance, ref IServerCapabilities setValue);
コード例 #5
0
        ConnectResponse IEasConnection.Connect(ConnectRequest connectRequest, IServerCapabilities capabilities)
        {
            ConnectCommand connectCommand = new ConnectCommand(this.EasConnectionSettings);

            return(connectCommand.Execute(connectRequest, capabilities ?? EasConnection.DefaultCapabilities));
        }
コード例 #6
0
 // Token: 0x06000078 RID: 120 RVA: 0x00002904 File Offset: 0x00000B04
 public IEnumerable <string> NotIn(IServerCapabilities desiredCapabilities)
 {
     return(this.Capabilities.Except(desiredCapabilities.Capabilities, StringComparer.OrdinalIgnoreCase));
 }
コード例 #7
0
        // Token: 0x06000077 RID: 119 RVA: 0x000028E4 File Offset: 0x00000AE4
        public bool Supports(IServerCapabilities desiredCapabilities)
        {
            IEnumerable <string> source = desiredCapabilities.NotIn(this);

            return(!source.Any <string>());
        }
コード例 #8
0
 // Token: 0x06000070 RID: 112 RVA: 0x00002846 File Offset: 0x00000A46
 internal ServerCapabilities(IServerCapabilities capabilities)
 {
     this.Capabilities = new List <string>(capabilities.Capabilities);
 }
コード例 #9
0
 ConnectResponse IEasConnection.Connect(ConnectRequest connectRequest, IServerCapabilities capabilities)
 {
     return(this.innerConnection.Connect(connectRequest, null));
 }
コード例 #10
0
 /// <summary>
 /// Gets the instance.
 /// </summary>
 /// <param name="src">The source.</param>
 /// <returns>ServerCapabilities.</returns>
 public static ServerCapabilities GetInstance(IServerCapabilities src)
 {
     return(default(ServerCapabilities));
 }