C# 修改Outlook 2010自动完成流
我正在使用下面的代码访问Outlook 2010缓存并对其进行修改 请让我知道如何将条目返回收件箱邮件存储C# 修改Outlook 2010自动完成流,c#,outlook,C#,Outlook,我正在使用下面的代码访问Outlook 2010缓存并对其进行修改 请让我知道如何将条目返回收件箱邮件存储 Microsoft.Office.Interop.Outlook.Application oApp = Globals.ThisAddIn.Application; Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = oApp.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFol
Microsoft.Office.Interop.Outlook.Application oApp = Globals.ThisAddIn.Application;
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = oApp.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderInbox);
StorageItem storage = inboxFolder.GetStorage("IPM.Configuration.Autocomplete", OlStorageIdentifierType.olIdentifyByMessageClass);
PropertyAccessor propertyAcc = storage.PropertyAccessor;
byte[] got = propertyAcc.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x7C090102");
谢谢
Jaspreet Singh您需要调用
propertyAcc.SetProperty
您正在分析自动完成缓存blob吗?是否正在使用选项?它将自动完成作为集合公开:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Nicknames = Session.GetNicknames
set NickName = Nicknames.Add("Joe The User <test@dimastr.com>")
Nicknames.Save
set Session=CreateObject(“Redemption.RDOSession”)
Session.MAPIOBJECT=Application.Session.MAPIOBJECT
设置昵称=Session.get昵称
设置昵称=昵称。添加(“用户乔”)
昵称。保存
Hi Dmitry,谢谢您的回复。我已经使用了集合属性,如下所示:;lstGot=GetList(got);propertyAcc.SetProperty(“,lstGot.ToArray());但它并没有将字节保存到邮件存储。我是否需要执行其他操作以将更新的流保存到邮件存储。谢谢Jaspreet SinghHi Dmitry,您能建议任何从缓存中删除自动完成项的方法吗。例如,我想删除所有包含domain@gmail.com的条目。更新后的流应该存储在邮件存储中。这样我就可以根据需要控制缓存中的自动完成条目。谢谢Jaspreet SinghYou需要解析昵称blob并适当更新它。虽然它确实是可行的,但blob是二进制的。使用赎回是一种选择吗?它为您解析blob。感谢Dmitry的回复。我正在做的是。将我从上面得到的字节转换为列表lstGot=get.OfType().ToList();并使用below int numberRows=ByteArrToInt(get.Skip(12.Take(4.ToArray())获取行数;然后我计算该行的开始位置和结束位置,并删除该行。但一旦我删除并保存它。我的自动完成程序损坏了。谢谢Jaspreet Singh请告诉我“解析昵称blob”是什么意思。你能举个例子吗。谢谢贾斯普里特·辛格