我需要更改用户在撰写电子邮件时看到的地址簿。但我找不到任何选择这样做。
一般来说,我看到了解决这个问题的两种方法:1)设置默认地址簿2)当用户打开“选择名称”对话框并修改初始地址列表时做出反应
对于选项1,我找不到任何功能来执行此操作,对于选项2,我只有部分解决方案。
foreach (Outlook.AddressList addrList in addrLists)
{
Outlook.Folder testFolder = addrList.GetContactsFolder() as Outlook.Folder;
if (Application.Session.CompareEntryIDs(testFolder.EntryID, addressbookID))
{
writeLog("passendes Adressbuch gefunden", 4);
namesDialog.InitialAddressList = addrList;
namesDialog.Display();
}
}
使用此代码,我可以设置初始地址列表并显示对话框,但我不知道按下“to”,“cc”“bcc”按钮时发生的事件。
有任何想法吗?
当用户单击To / CC / BCC按钮时,您无法覆盖Outlook行为。 InitialAddressList
属性仅适用于您明确显示地址簿对话框的情况。
在MAPI级别(C ++或Delphi)上,您需要调用IAddrBook.SetDefaultDir
传递容器的条目id(以及在配置文件部分中将PR_AB_CHOOSE_DIRECTORY_AUTOMATICALLY
属性设置为false)。
Outlook对象模型不公开该功能。如果使用Redemption是一个选项(我是它的作者),它会暴露RDOAddressBook.DefaultAddressList
r / w属性。