private void CreateSenderContact(IResource resMail) { IContact contact = null; if (OwnerEmailDetector.IsOwnerEmail(_senderEmail)) { contact = Core.ContactManager.FindOrCreateMySelfContact(_senderEmail, _senderName); resMail.SetProp(Core.Props.Date, _sentOn); _bSentMySelf = true; } else { contact = Core.ContactManager.FindOrCreateContact(_senderEmail, _senderName); } if ((_bSentMySelf || _bSentToMe) && contact.LastCorrespondDate.CompareTo(resMail.GetProp(Core.Props.Date)) < 0) { contact.LastCorrespondDate = (DateTime)resMail.GetProp(Core.Props.Date); } Core.ContactManager.LinkContactToResource(Core.ContactManager.Props.LinkFrom, contact.Resource, resMail, _senderEmail, _senderName); if (!resMail.HasLink(Core.ContactManager.Props.LinkFrom, contact.Resource)) { throw new ApplicationException("Core.ContactManager.LinkContactToResource did not linked mail to contact"); } }
private static void RegisterResources(IPlugin ownerPlugin) { OwnerEmailDetector.Initialize(); AddressBook.Initialize(); RS.ResourceTypes.Register(STR.Email, STR.Email, STR.Subject, ResourceTypeFlags.CanBeUnread, ownerPlugin); RS.ResourceTypes.Register(STR.AttachmentType, STR.AttachmentType, STR.Name, ResourceTypeFlags.Internal | ResourceTypeFlags.NoIndex, ownerPlugin); RS.ResourceTypes.Register(STR.MAPIStore, string.Empty, ResourceTypeFlags.Internal | ResourceTypeFlags.NoIndex); RS.ResourceTypes.Register(STR.MAPIInfoStore, STR.Name, ResourceTypeFlags.Internal | ResourceTypeFlags.NoIndex); RS.ResourceTypes.Register(STR.FileTypeMap, string.Empty, ResourceTypeFlags.Internal | ResourceTypeFlags.NoIndex); RS.ResourceTypes.Register(STR.MAPIFolder, "Outlook Folder", STR.Name, ResourceTypeFlags.ResourceContainer | ResourceTypeFlags.NoIndex | ResourceTypeFlags.Internal, ownerPlugin); RS.ResourceTypes.Register(STR.OutlookABDescriptor, STR.Name, ResourceTypeFlags.NoIndex | ResourceTypeFlags.Internal); RS.ResourceTypes.Register(STR.SyncVersion, STR.Name, ResourceTypeFlags.Internal | ResourceTypeFlags.NoIndex); RS.ResourceTypes.Register(STR.ResourceAttachment, STR.Name, ResourceTypeFlags.Internal | ResourceTypeFlags.NoIndex); RS.ResourceTypes.Register(STR.InitialEmailEnum, string.Empty, ResourceTypeFlags.NoIndex | ResourceTypeFlags.Internal); // OM-11397. Register owner plugin "Outlook" for this type even if // it is core type. This is necessary to keep condition // "Sent to Mailing list" out of Omea Reader version. RS.ResourceTypes.Register("MailingList", "Mailing List", "EmailAcct", ResourceTypeFlags.Internal | ResourceTypeFlags.NoIndex, ownerPlugin); }
private void PrepareRecipients(IEMessage message) { IETable recips = message.GetRecipients(); if (recips != null) { using ( recips ) { long count = recips.GetRowCount(); for (long i = 0; i < count; i++) { IERowSet rowSet = recips.GetNextRow(); if (rowSet != null) { using ( rowSet ) { string emailAddr = rowSet.FindStringProp(MAPIConst.PR_SMTP_ADDRESS); if (emailAddr == null || emailAddr.Length == 0) { emailAddr = rowSet.FindStringProp(MAPIConst.PR_EMAIL_ADDRESS); } if (emailAddr != null && emailAddr.Length > 0) { string displayName = rowSet.FindStringProp(MAPIConst.PR_DISPLAY_NAME); bool isTo = (rowSet.FindLongProp(MAPIConst.PR_RECIPIENT_TYPE) == (int)RecipientType.To); bool mySelf = OwnerEmailDetector.IsOwnerEmail(emailAddr); if (mySelf) { _bSentToMe = true; } _recipients.Add(new RecipientHelper(emailAddr, displayName, isTo, mySelf)); } } } } } } }
public IContact FindOrCreateContact(string entryID) { if (!CheckIfNamesValid()) { return(null); } IContact contactBO = null; bool isMyself = OwnerEmailDetector.IsOwnerEmail(_emailAddress); IResource person = Contact.FindByEntryID(entryID); if (person == null && isMyself) { contactBO = Core.ContactManager.MySelf; if (contactBO.Resource.HasProp(PROP.EntryID) && contactBO.Resource.GetStringProp(PROP.EntryID) != entryID) { contactBO = FindOrCreateRegularContact(entryID); } else { UpdateFields(contactBO); } contactBO.AddAccount(_emailAddress); } else { if (person != null) { contactBO = Core.ContactManager.GetContact(person); UpdateFields(contactBO); contactBO.AddAccount(_emailAddress); } else { contactBO = FindOrCreateRegularContact(entryID); } } return(contactBO); }