Esto es útil por ejemplo cuando realizamos una migración y las carpetas quedan cambiadas, es decir tenemos un "Calendar" y un "Calendario".
string usuario = "";
string pass = "";
string servidorCorreo = "";
string correoUsuario = "";
string dominio = "";
string origen = "Calendar"
string destino = "Calendario"
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Url = new Uri("https://" + servidorCorreo +"/ews/exchange.asmx");
service.Credentials = new NetworkCredential(usuario, pass, dominio);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, correoUsuario);
FolderView view = new FolderView(200);
view.Traversal = FolderTraversal.Deep;
FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.Root, view);
FolderId elid = null;
FolderId idDestino = null;
foreach (Folder myFolder in findFolderResults.Folders)
{
if (myFolder != null)
{
if (myFolder.DisplayName != null)
{
if (myFolder.DisplayName.CompareTo(origen) == 0)
elid = myFolder.Id;
if (myFolder.DisplayName.CompareTo(destino) == 0)
{
idDestino = myFolder.Id;
}
}
}
}
FindItemsResults<Item> findResults = service.FindItems(elid, new ItemView(5000));
IEnumerable<ItemId> itemIds = from item in findResults
select item.Id;
Console.WriteLine("Moviendo items desde: " + origen + " " + destino);
if (idDestino == null) //Si no se especifica un destino se toma el Calendario de sistema como destino
service.MoveItems(itemIds, WellKnownFolderName.Calendar);
else
service.MoveItems(itemIds, idDestino);