我希望能够访问在电子邮件中输入TO,CC或BCC行时出现的自动完成地址列表。我希望能够提取此数据的方式与我访问Outlook中的其他地址列表的方式类似。
是否有人能够确认这是否可行,如果是这样我将如何去做。
目前,我正在提取各种其他地址列表的电子邮件地址。
foreach (Outlook.AddressEntry item in addressList.AddressEntries)
{
using (item.ComDisposable())
{
switch (item.AddressEntryUserType)
{
case Outlook.OlAddressEntryUserType.olExchangeUserAddressEntry:
case Outlook.OlAddressEntryUserType.olExchangeRemoteUserAddressEntry:
var exUser = item.GetExchangeUser();
Debug.WriteLine(exUser.PrimarySmtpAddress, "_GetOutlookContacts");
yield return new EGContact(exUser.Name, exUser.PrimarySmtpAddress, item.ID);
break;
case Outlook.OlAddressEntryUserType.olOutlookContactAddressEntry:
var contact = item.GetContact();
yield return new EGContact(contact.FullName, contact.Email1Address, item.ID);
break;
case Outlook.OlAddressEntryUserType.olExchangeDistributionListAddressEntry:
break;
default:
break;
}
}
}
答案 0 :(得分:1)
自动完成流存储为隐藏(关联)消息,消息类别为" IPM.Configuration.Autocomplete"在收件箱文件夹中。您可以在OutlookSpy中查看数据:转到收件箱文件夹,单击OutlookSpy功能区上的IMAPIFolder按钮,转到"关联内容"选项卡,使用PR_MESSAGE_CLASS ==" IPM.Configuration.Autocomplete"找到一条消息,选择PR_ROAMING_BINARYSTREAM属性以查看其内容。
您可以使用Outlook对象模型(MAPIFolder.GetStorage("IPM.Configuration.Autocomplete", OlStorageIdentifierType.olIdentifyByMessageClass
)打开该邮件,使用PropertyAccessor.GetProperty
读取该属性,然后解析它。请注意,无法使用PropertyAccessor打开大型自动完成流。
如果使用Redemption选项,则会将自动填充功能公开为RDONicknames集合:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Nicknames = Session.GetNicknames
for each NickName in NickNames
Debug.Print NickName.Name & " - " & NickName.SmtpAddress
next
答案 1 :(得分:0)
在早期版本的Outlook中,此信息存储在本地.NK2文件中。在Outlook 2010及更高版本中,此信息存储在您的邮箱中(自动完成流)。有关详细信息,请参阅Clearing AutoComplete and other Recipient Caches。
您可以使用Recipients集合(请参阅MailItem类的相应属性)来访问输入到“收件人”,“抄送”或“密件抄送”字段的数据。