有可能从Windows搜索ItemUrl获得Outlook MailItem EntryID吗?

本文关键字:MailItem EntryID Outlook 获得 Windows 搜索 ItemUrl 有可能 | 更新日期: 2023-09-27 18:07:56

如果您执行Windows索引搜索电子邮件或任何outlook项目,它是不可能得到outlookItem EntryID。

你可以从索引搜索中得到的信息是ItemUrl它是这样的

mapi://s - 1 - 5 - 21 - 2127521184 - 1604012920 - 2127521184 - 71418/邮箱-一些用户(efb89 484美元)/0/日历/곯가가가걍걝걌곌겷걢곒갑겛개가검걟곔걙곾걤곂갠가

是否可以在c#中从上面的mapi url获得EntryID ?

有可能从Windows搜索ItemUrl获得Outlook MailItem EntryID吗?

当然,您需要解码搜索URL并提取条目id。

我找到了以下链接的c#解决方案:

http://social.msdn.microsoft.com/forums/windowsdesktop/en us/00491710 e245 - 452 f - 8 b0a - 56 - caa56277e4/how - -开- mapi url返回-从- wds vista?forum=windowsdesktopsearchdevelopment

这是我用来从Windows搜索索引URL条目中获取EntryID的代码。我在URL中查找Unicode字符,它类似于//邮件示例url"mapi://{s - 1 - 5 - 21 - 4283974727 - 3770627120 - 4283974727 - 1105}/个人文件夹(93美元bd4d7d)/0/2XX/가가가가걛객갹겠걸갨겵걀겡갯갉걉곦걽곁걹갤갢갣가/在=걥걫각가:审计proposal.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);