Beispiel #1
0
        public MailClient(IMailClientConfiguration configuration, ILogger logger = null)
        {
            _configuration = configuration;

            _imap = new ImapClient();
            _smtp = new SmtpClient();

            _logger = logger;

            _imap.ServerCertificateValidationCallback += UnconditionalCertificateAcceptance;
            _smtp.ServerCertificateValidationCallback += UnconditionalCertificateAcceptance;
        }
Beispiel #2
0
        private async Task EnsureConnectionOf(SmtpClient smtp, IMailClientConfiguration configuration)
        {
            if (!smtp.IsConnected)
            {
                _logger?.LogDebug($"Connecting {nameof(SmtpClient)}.");
                await smtp.ConnectAsync(configuration.Host, configuration.SmtpPort, SocketOptions);
            }

            if (!smtp.IsAuthenticated)
            {
                _logger?.LogDebug($"Authenticating {nameof(SmtpClient)}.");
                await smtp.AuthenticateAsync(configuration.UserName, configuration.Password);
            }
        }
Beispiel #3
0
        private async Task EnsureConnectionOf(ImapClient imap, IMailClientConfiguration configuration)
        {
            if (!imap.IsConnected)
            {
                _logger?.LogDebug($"Connecting {nameof(ImapClient)} to {configuration.Host}.");
                await imap.ConnectAsync(configuration.Host, configuration.ImapPort, SocketOptions);
            }

            if (!imap.IsAuthenticated)
            {
                _logger?.LogDebug($"Authenticating {nameof(ImapClient)}.");
                await imap.AuthenticateAsync(configuration.UserName, configuration.Password);
            }

            if (!imap.Inbox.IsOpen)
            {
                _logger?.LogDebug($"Opening Inbox of {nameof(ImapClient)}.");
                await imap.Inbox.OpenAsync(FolderAccess.ReadWrite);
            }
        }