public static void SyncPSTFiles() { if (Global.isSyncing) { Log.Append("ERROR: Cannot sync pst files because email synchronization is in progress"); return; } TimeSpan startTime = DateTime.Now.TimeOfDay; Log.Append("Syncing all available .pst files..."); string[] pstFiles = Directory.GetFiles(pstSyncDirectoryPath, "*.pst*"); foreach (string filePath in pstFiles.Where(x => !x.Contains("tmp"))) { string dumpPath = pstDumpDirectoryPath + Path.GetFileName(filePath); File.Move(filePath, dumpPath); Log.Append(String.Format(" Syncing emails from pst file '{0}'", Path.GetFileName(filePath))); RDOSession session = new RDOSession(); session.LogonPstStore(dumpPath); RDOFolder folder = session.GetDefaultFolder(rdoDefaultFolders.olFolderInbox); // Log-purpose parameters int pstEmailCount = folder.Items.Count; int currentEmailCount = 0; foreach (RDOMail mail in folder.Items) { currentEmailCount++; Email email = new Email() { ID = Global.GetAttachmentID(), UID = mail.EntryID, To = mail.To, From = mail.SenderEmailAddress, Subject = mail.Subject, MailDate = mail.SentOn }; email.RetrieveMsg(); Global.AppendEmail(email, String.Format("{0}/{1}", currentEmailCount, pstEmailCount)); mail.SaveAs(Global.messagesDirectoryPath + email.ID + ".eml", rdoSaveAsType.olRFC822); } session.Logoff(); } pstFiles.Where(x => !x.Contains("tmp")).ForEach(x => Log.Append(String.Format(" Moving pst. file \"{0}\"", x))); Log.Append(String.Format("Synced all available PST files. Process took {0}", Arithmetic.GetStopWatchStr((DateTime.Now.TimeOfDay - startTime).TotalMilliseconds))); }
public void ParseToEmail() { foreach (string recipient in To.Split(new[] { "," }, StringSplitOptions.None)) { string recipientEmail = Arithmetic.ParseEmailBrackets(recipient); if (Global.UserList.Any(x => x.Email == recipientEmail)) { To = Arithmetic.ParseEmailBrackets(recipientEmail); break; } } }