2014-01-17 88 views
3

我使用下面的代碼訪問Outlook 2010緩存並進行修改。修改Outlook 2010自動完成流

請讓我知道我可以UDPATE進入返回收件箱的郵件存儲。

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"); 

感謝 賈斯普里特·辛格

回答

1

你需要調用propertyAcc.SetProperty

解析自動完成緩存blob嗎?是否使用Redemption一個選項?它暴露自動完成爲RDONicknames集合:

set Session = CreateObject("Redemption.RDOSession") 
Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
set Nicknames = Session.GetNicknames 
set NickName = Nicknames.Add("Joe The User <[email protected]>") 
Nicknames.Save 
+0

嗨德米特里,感謝您的回覆。我已經使用Set屬性如下列表 lstGot;lstGot = GetList(got); propertyAcc.SetProperty(「http://schemas.microsoft.com/mapi/proptag/0x7C090102」,lstGot.ToArray());但它不會將字節保存到郵件存儲區。我是否需要做其他操作才能將更新後的流保存到郵件存儲區。感謝Jaspreet Singh – user2573216

+0

嗨德米特里,你可以請建議任何方式從緩存中刪除自動完成條目。例如,我想刪除所有具有域@ gmail.com的條目。並且更新的流應該存儲在郵件存儲中。這樣我就可以根據需要控制緩存中的自動完成條目。謝謝Jaspreet Singh – user2573216

+0

您需要解析暱稱blob並適當更新它。儘管它確實可行,但blob是二進制的。正在使用Redemption選項嗎?它爲你解析blob。 –