Example #1
0
 public static bool IsEqual(this MailReceiverSettings lhs, MailReceiverSettings rhs)
 {
     if (lhs.User != rhs.User) { return false; }
     if (lhs.Password != rhs.Password) { return false; }
     if (lhs.Server != rhs.Server) { return false; }
     if (lhs.Port != rhs.Port) { return false; }
     if (lhs.UseSsl != rhs.UseSsl) { return false; }
     return true;
 }
Example #2
0
        public void ValidateEmailReceiverSettingsConfiguration()
        {
            //Arrange
            var expected = new MailReceiverSettings();
            expected.Server = "xxxxxxxxx.xxxxxxxxx.in";
            expected.User = "******";
            expected.Password = "******";
            expected.UseSsl = false;
            expected.Port = 143;
            //Act
            var sut = SettingsManager.MailReceiverSettings;

            //Assert
            Assert.IsTrue(sut.IsEqual(expected));
        }
Example #3
0
 private static IMailFolder AuthenticateAndgetInbox(MailReceiverSettings settings, ImapClient client)
 {
     client.Connect(settings.Server, port: settings.Port, useSsl: settings.UseSsl);
     client.AuthenticationMechanisms.Remove(item: "XOAUTH2");
     client.Authenticate(settings.User, settings.Password);
     IMailFolder inbox = client.Inbox;
     inbox.Open(FolderAccess.ReadOnly);
     return inbox;
 }
Example #4
0
        private static void RefreshInbox(MailReceiverSettings settings)
        {
            using (var client = new ImapClient())
            {
                try
                {
                    IMailFolder inbox = AuthenticateAndgetInbox(settings, client);

                    BinarySearchQuery query = SearchQuery.DeliveredAfter(timeStamp)
                        .And(SearchQuery.SubjectContains(text: "Work Order - 'SF Recover Equipment'"));

                    IList<UniqueId> indexes = inbox.Search(query);
                    ErrorQueue.Enqueue("Total Mails Read: " + indexes.Count);
                    foreach (var index in indexes)
                    {
                        MimeMessage msg = inbox.GetMessage(index);
                        if (msg.Date.UtcDateTime >= timeStamp)
                        {
                            foreach (var ma in msg.Attachments)
                            {
                                string file = virtualpath + ma.ContentType.Name;
                                RemoveIfAboveTen(virtualpath);
                                if (!File.Exists(file))
                                {
                                    DownloadAttachement((MimePart)ma, file);
                                }
                                var details = PdfExtractor.ExtractInfoWithPolicy(file);
                                Send(details);
                                UpdateSheet(details);
                            }
                        }
                    }

                    client.Disconnect(quit: true);
                }
                catch (Exception ex)
                {
                    ErrorQueue.Enqueue(ex.Message);
                }
            }
        }
Example #5
0
        public static string GetDetailsWithinSpecificTimeSpan(DateTime from, DateTime to, MailReceiverSettings settings)
        {
            using (var client = new ImapClient())
            {
                try
                {
                    IMailFolder inbox = AuthenticateAndgetInbox(settings, client);

                    BinarySearchQuery query = SearchQuery.DeliveredAfter(from)
                        .And(SearchQuery.SubjectContains(text: "Work Order - 'SF Recover Equipment'"))
                        .And(SearchQuery.DeliveredBefore(to));

                    IList<UniqueId> indexes = inbox.Search(query);
                    var dicts = new List<Dictionary<string, string>>();
                    foreach (var index in indexes)
                    {
                        MimeMessage msg = inbox.GetMessage(index);
                        foreach (var ma in msg.Attachments)
                        {
                            string file = virtualpath + ma.ContentType.Name;
                            RemoveIfAboveTen(virtualpath);
                            if (!File.Exists(file))
                            {
                                DownloadAttachement((MimePart)ma, file);
                            }
                            dicts.Add(PdfExtractor.ExtractInfoWithPolicy(file));
                        }
                    }
                    client.Disconnect(quit: true);
                    return SheetUpdater.Create(dicts, string.Format("{0}-{1}_", from.ToString("dd_MM_yyyy"), to.ToString("dd_MM_yyyy")));
                }
                catch (Exception ex)
                {
                    ErrorQueue.Enqueue(ex.Message);
                }
            }
            return string.Empty;
        }
Example #6
0
        public static void StartRead(MailReceiverSettings settings)
        {
            Current.IsRead = true;

            if (Current.IsTaskRuning)
                return;

            while (Current.IsRead)
            {
                Current.IsTaskRuning = true;
                ErrorQueue.Enqueue("Reader Started At: " + DateTime.Now.ToString());
                RefreshInbox(settings);
                Thread.Sleep(TimeSpan.FromMinutes(value: timeInterval));
                timeStamp = timeStamp.AddMinutes(value: timeInterval);
            }
        }