private bool IsClearNeededImpl(IResource contact) { IEFolder folder = GetContactFolder(contact, false); if (folder == null) { return(false); } bool newCreated; IEMAPIProp message = OpenMessage(folder, contact, false, false, false, out newCreated); if (message == null) { return(true); } using ( message ) { string folderID = message.GetBinProp(MAPIConst.PR_PARENT_ENTRYID); FolderDescriptor folderDescriptor = FolderDescriptor.Get(folderID, message.GetBinProp(MAPIConst.PR_STORE_ENTRYID)); if (folderDescriptor == null || folderDescriptor.ContainerClass != FolderType.Contact) { return(true); } return(false); } }
private static bool RemoveCategories(ArrayList storedCategories, IEMAPIProp message) { if (storedCategories != null) { OutlookSession.SetCategories(message, null); return(true); } return(false); }
public static void SaveChanges(bool newCreated, string trace, IEMAPIProp message, string entryId) { _tracer.Trace("MAPI.Message.SaveChanges"); _tracer.Trace(trace); if (!newCreated) { BeginExportingMail(entryId); } message.SaveChanges(); }
public static ArrayList GetCategories(IEMAPIProp message) { int catTag = message.GetIDsFromNames(ref GUID.set4, "Keywords", PropType.PT_MV_STRING8); ArrayList storedCategories = message.GetStringArray(catTag); if (storedCategories != null) { return(storedCategories); } return(null); }
static public bool ProcessCategories(IEMAPIProp message, ArrayList categories) { ArrayList storedCategories = OutlookSession.GetCategories(message); if (categories.Count > 0) { return(UpdateCategories(categories, storedCategories, message)); } else { return(RemoveCategories(storedCategories, message)); } }
private static IEMAPIProp OpenMessage(IResource contact, bool create, bool forceCreate, bool trace) { IEMAPIProp prop = null; IEFolder folder = ExportContactDescriptor.GetContactFolder(contact, false); if (folder != null) { bool foo, _newCreated; prop = ExportContactDescriptor.OpenMessage(folder, contact, create, forceCreate, trace, out _newCreated, out foo); } return(prop); }
public IEMAPIProp OpenMessage(IEFolder folder, IResource contact, bool create, bool forceCreate, bool trace, out bool newCreated) { bool createdAsMailUser; IEMAPIProp prop = OpenMessage(folder, contact, create, forceCreate, trace, out newCreated, out createdAsMailUser); // "OpenMessage" set the value for "_createdAsMailUser" only in the case // of succeed action, leaving the var unset in other case. if (createdAsMailUser) { _createdAsMailUser = createdAsMailUser; } return(prop); }
protected override void Execute() { IEMAPIProp message = OpenMessage(_contact, false, true, true); if (message == null) { if (_newCreated) { _tracer.Trace("Cannot Export NEW contact for resource id = " + _contact.Id); } _tracer.Trace("Cannot Export contact for resource id = " + _contact.Id); return; } using ( message ) { ExportCategories.ProcessCategories(message, _contact); OutlookSession.SaveChanges(_newCreated, "Export contact for resource id = " + _contact.Id, message, message.GetBinProp(MAPIConst.PR_ENTRYID)); } }
private void SetEmailAddress(IEMAPIProp message) { IResourceList emails = _contact.GetLinksOfType("EmailAccount", Core.ContactManager.Props.LinkEmailAcct); if (emails.Count > 0) { IResource email = emails[0]; string emailText = email.GetPropText(Core.ContactManager.Props.EmailAddress); if (emailText.Length > 0) { int tag = message.GetIDsFromNames(ref GUID.set3, lID.contactEmail, PropType.PT_STRING8); message.SetStringProp(tag, emailText); message.SetStringProp(MAPIConst.PR_EMAIL_ADDRESS, emailText); message.SetStringProp(MAPIConst.PR_CONTACT_EMAIL_ADDRESS, emailText); message.SetStringProp(MAPIConst.PR_CONTACT_EMAIL_ADDRESS1, emailText); } } }
private static bool UpdateCategories(ArrayList categories, ArrayList storedCategories, IEMAPIProp message) { bool changes = false; if (storedCategories == null && categories == null) { changes = false; } else if (storedCategories != null && categories != null && categories.Count != storedCategories.Count) { changes = true; } else if (storedCategories == null && categories != null && categories.Count > 0) { changes = true; } else if (categories == null && storedCategories != null && storedCategories.Count > 0) { changes = true; } if (storedCategories != null && !changes) { storedCategories.Sort(); categories.Sort(); for (int i = 0; i < categories.Count; i++) { if ((string)categories[i] != (string)storedCategories[i]) { changes = true; break; } } } if (changes) { _tracer.Trace("TO BE EXPORT FOR CATEGORIES"); _tracer.Trace("Old categories:"); if (storedCategories != null) { foreach (string str in storedCategories) { _tracer.Trace(str); } } _tracer.Trace("New categories:"); if (categories != null) { foreach (string str in categories) { _tracer.Trace(str); } } _tracer.Trace("TO BE EXPORT FOR CATEGORIES END"); OutlookSession.SetCategories(message, categories); } return(changes); }
static public bool ProcessCategories(IEMAPIProp message, IResource resource) { return(ProcessCategories(message, GetCategoriesList(resource))); }
public static void SetCategories(IEMAPIProp message, ArrayList categories) { int catTag = message.GetIDsFromNames(ref GUID.set4, "Keywords", PropType.PT_MV_STRING8); message.SetStringArray(catTag, categories); }
private void SetCategories(IEMAPIProp message) { ExportCategories.ProcessCategories(message, _contact); }