有可能从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 ?
当然,您需要解码搜索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);