Ejemplo n.º 1
0
        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");
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        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);
        }