public override void CheckMime(Mime m)
        {
            _addressId           = null;
            _currentDocumentType = null;

            // Получаем кол-во корректных адресов, т.е. отправленных
            // на @waybills.analit.net или на @refused.analit.net
            var emailList = m.GetRecipients()
                            .Where(x => GetClientCode(x) != null)
                            .Select(s => s.ToUpper())
                            .Distinct()
                            .ToList();

            var correctAddresCount = emailList.Count;

            // Все хорошо, если кол-во вложений больше 0 и распознан только один адрес как корректный
            // Если не сопоставили с клиентом)
            if (correctAddresCount == 0)
            {
                throw new EMailSourceHandlerException("Не найден клиент.",
                                                      Settings.Default.ResponseDocSubjectTemplateOnNonExistentClient,
                                                      Settings.Default.ResponseDocBodyTemplateOnNonExistentClient);
            }
            if (correctAddresCount == 1 && m.Attachments.Length == 0)
            {
                throw new EMailSourceHandlerException("Письмо не содержит вложений.",
                                                      Settings.Default.ResponseDocSubjectTemplateOnNothingAttachs,
                                                      Settings.Default.ResponseDocBodyTemplateOnNothingAttachs);
            }
            if (correctAddresCount > 1)
            {
                throw new EMailSourceHandlerException("Письмо отправленно нескольким клиентам.",
                                                      Settings.Default.ResponseDocSubjectTemplateOnMultiDomen,
                                                      Settings.Default.ResponseDocBodyTemplateOnMultiDomen);
            }
            if (m.Attachments.Length > 0)
            {
                var attachmentsIsBigger = m.Attachments.Any(attachment => (attachment.Data.Length / 1024.0) > Settings.Default.MaxWaybillAttachmentSize);
                if (attachmentsIsBigger)
                {
                    throw new EMailSourceHandlerException(String.Format("Письмо содержит вложение размером больше максимально допустимого значения ({0} Кб).",
                                                                        Settings.Default.MaxWaybillAttachmentSize),
                                                          Settings.Default.ResponseDocSubjectTemplateOnMaxWaybillAttachment,
                                                          String.Format(Settings.Default.ResponseDocBodyTemplateOnMaxWaybillAttachment,
                                                                        Settings.Default.MaxWaybillAttachmentSize));
                }
            }
        }
        public void ParseRecipients(Mime mime)
        {
            ParseRecipientAddresses(mime.GetRecipients());

            if (Recipients.Count > 0)
            {
                foreach (var recipient in Recipients)
                {
                    if (recipient.Status == RecipientStatus.Verified)
                    {
                        var users = recipient.GetUsers(Suppliers[0].RegionMask);
                        if (users.Count > 0)
                        {
                            for (int i = users.Count - 1; i > -1; i--)
                            {
                                var mails = ActiveRecordLinqBase <MailSendLog> .Queryable.Where(
                                    log => log.Mail.LogTime > DateTime.Now.AddDays(-1) && log.Mail.SHA256Hash == SHA256MailHash && log.User.Id == users[i].Id).ToList();

                                if (mails.Count > 0)
                                {
                                    users.RemoveAt(i);
                                }
                            }
                            if (users.Count > 0)
                            {
                                users.ForEach(u => AddUser(u, recipient));
                            }
                            else
                            {
                                recipient.Status = RecipientStatus.Duplicate;
                            }
                        }
                        else
                        {
                            recipient.Status = RecipientStatus.NotAvailable;
                        }
                    }
                }
            }
        }