コード例 #1
0
ファイル: ContactDescriptor.cs プロジェクト: mo5h/omeo
        private ArrayList GetEmailAddresses(/*string entryId*/)
        {
            IEAddrBook ab       = OutlookSession.GetAddrBook();
            IEMailUser mailUser = ab.OpenMailUser(_entryID);

            if (mailUser != null)
            {
                using ( mailUser )
                {
                    ArrayList addresses = mailUser.GetStringArray(MAPIConst.PR_EMS_AB_PROXY_ADDRESSES);
                    if (addresses != null && addresses.Count > 0)
                    {
                        ArrayList emailAddresses = new ArrayList(addresses.Count);
                        foreach (string str in addresses)
                        {
                            string newAddress = ExtractAddress(str);
                            if (newAddress != null)
                            {
                                emailAddresses.Add(newAddress);
                            }
                        }
                        return(emailAddresses);
                    }
                }
            }
            return(null);
        }
コード例 #2
0
        private void SynchronizeOutlookAddressBooksImpl()
        {
            _tracer.Trace("Start SynchronizeOutlookAddressBooksImpl");

            IEAddrBook addrBook = OutlookSession.GetAddrBook();

            if (addrBook != null)
            {
                int count = addrBook.GetCount();
                for (int i = 0; i < count; i++)
                {
                    if (ShuttingDown)
                    {
                        return;
                    }
                    OutlookSession.ProcessJobs();
                    IEABContainer abCont = addrBook.OpenAB(i);
                    if (abCont == null)
                    {
                        continue;
                    }
                    using ( abCont )
                    {
                        int displayType = abCont.GetLongProp(MAPIConst.PR_DISPLAY_TYPE);
                        if (displayType != ABType.DT_GLOBAL)
                        {
                            continue;
                        }
                        string entryID = abCont.GetBinProp(MAPIConst.PR_ENTRYID);
                        Core.ResourceAP.RunJob(new OutlookABDescriptor(abCont.GetStringProp(MAPIConst.PR_DISPLAY_NAME), entryID));
                    }
                }
            }
            _tracer.Trace("Start SynchronizeOutlookAddressBooksImpl");
        }
コード例 #3
0
ファイル: ExportDescriptors.cs プロジェクト: mo5h/omeo
 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);
     }
 }
コード例 #4
0
        private void SynchronizeContactsImpl()
        {
            _tracer.Trace("Start SynchronizeContactsImpl");

            Settings.UpdateProgress(0, "Computing Address Books count...", "");
            int totalABs     = Folder.GetFolders(FolderType.Contact).Count;
            int processedABs = 0;

            IEAddrBook addrBook = OutlookSession.GetAddrBook();

            if (addrBook != null)
            {
                int count = addrBook.GetCount();
                totalABs += count;
                for (int i = 0; i < count; ++i)
                {
                    if (ShuttingDown)
                    {
                        return;
                    }
                    OutlookSession.ProcessJobs();
                    ++processedABs;
                    int percentage = (processedABs * 100) / totalABs;
                    Settings.UpdateProgress(percentage, "Synchronizing Address Books", processedABs.ToString());
                    IEABContainer abContainer = addrBook.OpenAB(i);
                    if (abContainer == null)
                    {
                        continue;
                    }
                    using ( abContainer )
                    {
                        ProcessGlobalAddressBook(abContainer);
                    }
                }
            }
            ProcessContactFolders(processedABs, totalABs);
            _tracer.Trace("Finish SynchronizeContactsImpl");

            Settings.UpdateProgress(100, "Synchronizing Address Books", totalABs.ToString());
        }