Outlook会在发送电子邮件后缓存电子邮件地址,并在下次尝试输入“收件人”字段时显示建议。联系人卡片还显示来自交换的缓存电子邮件地址。
当Outlook处于直接模式时,我无法在代码中检索此电子邮件地址(olCachedOffline即"使用缓存Exchange模式"选项未在Outlook Mail设置中选中),代码抛出异常&#34 ;财产" http://schemas.microsoft.com/mapi/proptag/0x800F101E"是未知的或无法找到。"尝试在地址addressEntry.PropertyAccessor.GetProperty()的两个Schema网址。
这是我正在使用的代码。它在缓存模式下工作正常(在线)。
private string GetExchangeEmail(Outlook.AddressEntry addressEntry)
{
Outlook.ExchangeUser user = addressEntry.GetExchangeUser();
string emailAddress = user.PrimarySmtpAddress;
// return from here if emailAddress is valid
string schemaName = string.Empty;
Outlook.OlExchangeConnectionMode connectionMode = Globals.AddIn.Application.Session.ExchangeConnectionMode;
if (connectionMode == Outlook.OlExchangeConnectionMode.olCachedConnectedDrizzle ||
connectionMode == Outlook.OlExchangeConnectionMode.olCachedConnectedFull ||
connectionMode == Outlook.OlExchangeConnectionMode.olCachedConnectedHeaders ||
connectionMode == Outlook.OlExchangeConnectionMode.olCachedDisconnected ||
connectionMode == Outlook.OlExchangeConnectionMode.olCachedOffline)
{
// For Direct Mode
// PR_SMTP_ADDRESS = 0x39FE001E;
string FinalEmail = addressEntry.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39FE001E") as string;
return FinalEmail.Replace("SMTP:", "");
}
else
{
// For Cached Mode
// PR_EMS_AB_PROXY_ADDRESSES = 0x800F101E;
string FinalEmail = addressEntry.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x800F101E") as string;
return FinalEmail.Replace("SMTP:", "");
}
}
答案 0 :(得分:0)
解决方案是打开在线模式或切换到缓存模式。
Outlook会在发送电子邮件后缓存电子邮件地址,并在下次尝试输入TO字段时显示建议。
查看收件箱文件夹的相关内容。我想你会找到所需的条目。您可以使用任何低级(扩展MAPI)属性查看器(如MFCMAPI或OutlookSpy)来观察隐藏内容。
另外,您可以在缓存Exchange模式文章中找到如何配置脱机通讯簿的下载方式。