Можно ли получить Outlook MailItem EntryID из Windows Search ItemUrl

Если вы выполняете поиск по индексу Windows для электронной почты или любого элемента Outlook, невозможно получить EntryID OutlookItem.

Информация, которую вы можете получить из поиска по индексу, — это ItemUrl, который выглядит примерно так:

mapi://S-1-5-21-2127521184-1604012920-1887927527-71418/Почтовый ящик — некоторый пользователь (484 долл. США efb89)/0/Calendar/곯가가가걍걝걌곌겷걢곒갑겛겳개가겛곰가겛곰가겛검

Возможно ли в С# получить EntryID из приведенного выше URL-адреса mapi?


person user2258793    schedule 10.06.2014    source источник
comment
Какие библиотеки вы используете? Вход в почтовый ящик?   -  person T.S.    schedule 10.06.2014
comment
Это то, что вы ищете? msdn.microsoft.com/en- мы/библиотека/офис/   -  person T.S.    schedule 11.06.2014


Ответы (3)


Конечно, вам нужно будет расшифровать URL-адрес поиска и извлечь идентификатор записи. См. http://msdn.microsoft.com/en-us/library/office/ff960454.aspx и http://msdn.microsoft.com/en-us/library/office/ff960506.aspx в MSDN.

person Dmitry Streblechenko    schedule 10.06.2014
comment
Спасибо за ответ, но есть ли версия кода С# или демонстрационный пример. - person user2258793; 11.06.2014
comment
Я не знаю ни одного, извините. - person Dmitry Streblechenko; 11.06.2014


Это код, который я использую для получения EntryID из записи URL-адреса индекса поиска Windows. Я ищу символы Unicode в URL-адресе, который выглядит примерно так: // пример почтового адреса "mapi://{S-1-5-21- 4283974727-3770627120-1224354217-1105}/Персональные папки ($ 93BD4D7D)/0/2xx/가가가 가 갹겠걸 갨 겵걀 겡갯 곦걽 곁걹갤갢갣 가/AT = 걥 걫각가: AudIt.docx "

/// <summary>
        /// Process a string to decode Unicode (Hangul) value to make Outlook EntryID. Pairs of hex digits make unicode chars
        /// </summary>
        /// <param name="sIn"></param>
        /// <returns></returns>
        public static string ProcessHangul(string sIn)
        {
            string sOut = "";
            try
            {
                for (int i = 0; i < sIn.Length; i++)
                {
                    int iCode = sIn[i];
                    string hexCode = iCode.ToString("X");
                    //System.Diagnostics.Debug.Print(i + " " + hexCode);

                    sOut += hexCode.Substring(2, 2);
                }
            }
            catch (Exception Ex)
            {
                Common.LogError("ProcessHangul error", Ex);
            }
            return sOut;
        }

Это называется следующим образом:

string sHangul = "";
                    if (sURL.IndexOf("/at=") == -1) // if no attachment
                    { sHangul = Path.GetFileName(sURL); }
                    else
                    {
                        sHangul = Path.GetFileName(Path.GetDirectoryName(sURL));
                    }

                    sEntryID = Common.ProcessHangul(sHangul);

person SimonKravis    schedule 27.03.2015