예제 #1
0
        private static void PerformMailFix(string folderId, RDOSession session)
        {
            var folder = session.GetFolderFromID(folderId);

            if (folder.FolderKind == rdoFolderKind.fkSearch)
            {
                return;
            }

            var before = new DateTime(2014, 06, 30);

            foreach (RDOMail item in folder.Items)
            {
                if (item.ReceivedTime >= before)
                {
                    continue;
                }
                var diff = item.ReceivedTime - item.SentOn;
                if (!(diff.TotalHours > 10))
                {
                    continue;
                }
                Console.WriteLine("" + item.Subject + " - " + item.ReceivedTime + "    " + item.SentOn);
                count++;
                item.ReceivedTime = item.SentOn;
                item.Save();
            }

            Console.WriteLine(folder.DefaultMessageClass);
            //do the same fix for all subfolders
            foreach (RDOFolder subFolder in folder.Folders)
            {
                PerformMailFix(subFolder.EntryID, session);
            }
        }
예제 #2
0
        private static void PerformMailFix(string folderId, RDOSession session, TimeSpan delta)
        {
            RDOFolder folder = session.GetFolderFromID(folderId);

            if ((folder.FolderKind == rdoFolderKind.fkSearch) || (delta == TimeSpan.Zero))
            {
                return;
            }

            DateTime oldTimeStamp, newTimeStamp;

            foreach (RDOMail item in folder.Items)
            {
                oldTimeStamp      = item.ReceivedTime;
                newTimeStamp      = Options.BackInTime ? (oldTimeStamp - delta) : (oldTimeStamp + delta);
                item.ReceivedTime = newTimeStamp;
                if (!Options.TestMode)
                {
                    item.Save();
                }
                count++;
                Debug.WriteLine($"      ReceivedTime is {oldTimeStamp}, set to {newTimeStamp}");
            }

            foreach (RDOFolder subFolder in folder.Folders)
            {
                Debug.WriteLine($"      Processing subfolder {subFolder.Name}");
                PerformMailFix(subFolder.EntryID, session, delta);
            }
        }
예제 #3
0
        public static bool MoveMail(string entryId, string newFolderName)
        {
            var application = new Application();

            application.Session.Logon();

            if (application.Session == null)
            {
                return(false);
            }

            MAPIFolder destFldr = null;

            foreach (MAPIFolder folder in application.Session.Folders)
            {
                destFldr = GetFolder(folder, newFolderName);

                if (destFldr != null)
                {
                    break;
                }
            }

            if (destFldr == null)
            {
                return(false);
            }

            try
            {
                var rdo = new RDOSession();

                rdo.MAPIOBJECT = application.Session.MAPIOBJECT;

                var rdoMail = rdo.GetMessageFromID(entryId);

                if (rdoMail == null)
                {
                    return(false);
                }

                var rodFolder = rdo.GetFolderFromID(destFldr.EntryID);

                rdoMail.Move(rodFolder);

                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #4
0
        public static DateTime GetNewestDateTimeInFolder(string folderID, RDOSession session)
        {
            DateTime  dt     = DateTime.MinValue;
            RDOFolder folder = session.GetFolderFromID(folderID);

            foreach (RDOMail item in folder.Items)
            {
                if (item.ReceivedTime > dt)
                {
                    dt = item.ReceivedTime;
                }
            }
            return(dt);
        }