【发布时间】:2017-01-16 09:50:42
【问题描述】:
我正在开发一个 VSTO 插件,它需要在发送新电子邮件时读取所有电子邮件地址。以下是我现在正在使用的代码,但在少数情况下它不起作用。
if (addr.Type == "EX")
{
if (addr.AddressEntryUserType == OlAddressEntryUserType.olExchangeUserAddressEntry
|| addr.AddressEntryUserType == OlAddressEntryUserType.olExchangeRemoteUserAddressEntry)
{
exch = addr.GetExchangeUser();
smtpAddress = exch != null ? exch.PrimarySmtpAddress : null;
}
else if (addr.AddressEntryUserType == OlAddressEntryUserType.olOutlookContactAddressEntry)
{
cont = addr.GetContact();
//returns the actual contact but it has 3 email properties (Email1Address, Email2Address, Email3Address).
//How to identify which email has the user selected
}
}
else if (addr.Type == "SMTP")
{
smtpAddress = addr.Address;
}
如果 AddressEntryUserType 是 olExchangeUserAddressEntry 或 olExchangeRemoteUserAddressEntry,则代码工作正常。但如果是本地 Outlook 联系人 (olOutlookContactAddressEntry),我不确定如何检索电子邮件地址。 GetContact 方法为我提供了实际的联系方式,但由于它有 3 封电子邮件,我不知道如何找到用户在撰写电子邮件时选择的地址。
我已经尝试将基于 Exchange 的电子邮件地址转换为 SMTP,如本论坛所述。但它正在产生巨大的性能影响。一个地址转换为 SMTP 大约需要 300 毫秒。有没有其他有效的方法可以从 Recepient 对象中识别电子邮件地址?
【问题讨论】:
标签: vsto outlook-addin