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; }
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)); }
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; }
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); } } }
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; }
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); } }