从Windows搜索ItemUrl获取Outlook MailItem EntryID是否可行

时间:2014-06-10 19:42:07

标签: c# .net outlook vsto office-2013

如果您对电子邮件或任何Outlook项目执行Windows索引搜索,则无法获取outlookItem EntryID。

您可以从索引搜索获得的信息是ItemUrl,如下所示:

mapi:// S-1-5-21-2127521184-1604012920-1887927527-71418 /邮箱 - 部分用户($ 484efb89)/ 0 /日历/곯가가가가걝걌곌겷걢곒갑겛개가검걟곔 걙곾걤곂갠가

C#中是否可以从上面的mapi url获取一个EntryID?

3 个答案:

答案 0 :(得分:0)

当然,您需要解码搜索URL并提取条目ID。请参阅MSDN上的http://msdn.microsoft.com/en-us/library/office/ff960454.aspxhttp://msdn.microsoft.com/en-us/library/office/ff960506.aspx

答案 1 :(得分:0)

答案 2 :(得分:0)

这是我用来从Windows搜索索引URL条目中获取EntryID的代码。我在URL中查找Unicode字符,类似于                 // url mail example“mapi:// {S-1-5-21-4283974727-3770627120-1224354217-1105} /个人文件夹($ 93bd4d7d)/ 0 / 2XX /가가가가가갹겠걸갨겵걀겡갯갉걉곦걽곦걽 갤갢갣가/ at =걥걫각가:审计提案.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);