Example #1
0
        /// <summary>
        ///
        /// </summary>
        public async Task <(int success, int failure)> DoMailErrorRecoveryAsync()
        {
            var _result = (success : 0, failure : 0);

            using (var _ltctx = _contextFactory.CreateDbContext())
            {
                var _members = _ltctx.tb_lion_member
                               .Where(m => m.IsAlive == true && m.MailError == true)
                               .ToList();

                foreach (var _member in _members)
                {
                    try
                    {
                        _ltctx.Database.BeginTransaction();

                        var _verify = await _smtpDirect.VerifyMailServerConnection2Async(_mailSender.MailSenderAddress, _member.EmailAddress);

                        if (_verify.error_code == SmtpError.GENERIC_SUCCESS)
                        {
                            _logger.LogInformation($"[worker.purger] mail error recovered '{_member.EmailAddress}', {_verify.error_code}, {_verify.error_message}");

                            _member.MailError = false;
                            _result.success++;
                        }
                        else
                        {
                            _logger.LogInformation($"[worker.purger] mail error detected '{_member.EmailAddress}', {_verify.error_code}, {_verify.error_message}");

                            var _error_msgs = _verify.error_message.Split(' ');
                            if (_error_msgs.Length > 0 && _error_msgs[0] == "550")
                            {
                                _member.IsAlive = false;
                            }

                            _result.failure++;
                        }

                        _ltctx.SaveChanges();

                        _ltctx.Database.CommitTransaction();
                    }
                    catch
                    {
                        _ltctx.Database.RollbackTransaction();
                        _result.failure++;
                    }
                }
            }

            return(_result);
        }
Example #2
0
        public async Task <(SmtpError error_code, string error_message)> TestMailServerConnectionAsync(mMember member)
        {
            var _result = (error_code : SmtpError.GENERIC_SUCCESS, error_message : "");

            try
            {
                var _verify = await __smtp_direct.VerifyMailServerConnection2Async(MailSenderAddress, member.EmailAddress);

                if (_verify.error_code != SmtpError.GENERIC_SUCCESS)
                {
                    member.MailError = true;
                    _result          = _verify;
                }
            }
            catch
            {
                member.MailError   = true;
                _result.error_code = SmtpError.CONNECT_ERROR;
            }

            return(_result);
        }