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