private void DoMoveBetweenStorages(IResource resMail, IEMessage message, PairIDs messageIDs, PairIDs selectedFolderIDs) { using ( message ) { IEFolder folder = OutlookSession.OpenFolder(selectedFolderIDs.EntryId, selectedFolderIDs.StoreId); if (folder == null) { return; } using ( folder ) { IEMessage newMessage = folder.CreateMessage("IPM.note"); using ( newMessage ) { message.CopyTo(newMessage); string entryID = newMessage.GetBinProp(MAPIConst.PR_ENTRYID); OutlookSession.SaveChanges(true, "Save mail for moving between storages resource id = " + resMail.Id, newMessage, entryID); if (_copy) { return; } if (!string.IsNullOrEmpty(entryID) && !resMail.HasProp(-PROP.Attachment)) { new ResourceProxy(resMail).SetProp(PROP.EntryID, entryID); } OutlookSession.DeleteMessage(messageIDs.StoreId, messageIDs.EntryId, false); } } } }
internal static IEMAPIProp OpenMessage(IEFolder folder, IResource contact, bool create, bool forceCreate, bool trace, out bool newCreated, out bool createdAsMailUser) { createdAsMailUser = false; newCreated = false; using ( folder ) { IEMAPIProp message = null; if (!create) { string mesEntryId = contact.GetPropText(PROP.EntryID); if (mesEntryId.Length > 0) { message = OutlookSession.OpenMessage(folder, mesEntryId); if (message == null) { Contact.RemoveFromSync(contact, true); } } if (!forceCreate) { return(message); } } if (message == null) { string folderId = folder.GetBinProp(MAPIConst.PR_ENTRYID); _tracer.Trace(folderId); IEAddrBook ab = OutlookSession.GetAddrBook(); if (ab != null) { for (int i = 0; i < ab.GetCount(); ++i) { string abEntryId = ab.FindBinProp(i, MAPIConst.PR_ENTRYID_ASSOCIATED_WITH_AB); if (abEntryId == folderId) { IEABContainer abContainer = ab.OpenAB(i); if (abContainer != null) { using ( abContainer ) { message = abContainer.CreateMailUser( ); if (message != null) { createdAsMailUser = true; return(message); } } } break; } } } message = folder.CreateMessage("IPM.Contact"); newCreated = true; } return(message); } }
private IEMessage OpenMessage(ref bool wasChanges) { if (_createNew && _OMTaskId == null) { return(null); } wasChanges = false; IEMessage message = null; if (!_createNew) { PairIDs IDs = PairIDs.Get(_task); if (IDs == null) { if (_task.HasProp(PROP.EntryID)) { IEFolder taskFolder = OutlookSession.OpenDefaultTaskFolder(); if (taskFolder == null) { return(null); } using ( taskFolder ) { IDs = new PairIDs(_task.GetStringProp(PROP.EntryID), taskFolder.GetBinProp(MAPIConst.PR_STORE_ENTRYID)); } } if (IDs == null) { return(null); } } message = OutlookSession.OpenMessage(IDs.EntryId, IDs.StoreId); } if (message == null) { IEFolder taskFolder = OutlookSession.OpenDefaultTaskFolder(); if (taskFolder == null) { return(null); } wasChanges = true; using ( taskFolder ) { message = taskFolder.CreateMessage("IPM.Task"); _created = true; } } return(message); }