Exemplo n.º 1
0
        public IEnumerable <ValidationResult> Validate()
        {
            var configurator = new SmtpConfigurator();

            _configureSmtp(configurator);

            if (string.IsNullOrWhiteSpace(configurator.Options.Host))
            {
                yield return(new ConfigurationValidationResult(ValidationResultDisposition.Failure, nameof(configurator.Options.Host), "Empty"));
            }
            if (string.IsNullOrWhiteSpace(configurator.Options.Username))
            {
                yield return(new ConfigurationValidationResult(ValidationResultDisposition.Failure, nameof(configurator.Options.Username), "Empty"));
            }
        }
        public SmtpFilter(Action <ISmtpConfigurator> configureSmtp)
        {
            var configurator = new SmtpConfigurator();

            configureSmtp(configurator);
            _serverOptions = configurator.Options;

            var smtpClient = new SmtpClient();

            _authenticationCompleted = smtpClient
                                       .ConnectAsync(configurator.Options.Host, configurator.Options.Port)
                                       .ContinueWith(_ => _smtpClient.AuthenticateAsync(configurator.Options.Username, configurator.Options.Password))
                                       .ContinueWith(_ =>
            {
                if (_serverOptions.NoOp.HasValue)
                {
                    _noOpTimer = new Timer(state => _smtpClient.NoOp(), null, 0, (uint)_serverOptions.NoOp.Value.TotalMilliseconds);
                }

                return(Task.CompletedTask);
            }).Unwrap();
            _smtpClient = smtpClient;
        }