我正在尝试 from、to 和 cc 字段的电子邮件地址。有时这些是 AD 电子邮件、SMTP 或分发电子邮件。
我在这里找到了一个有类似问题的人,但他们对分发列表一无所知。
我稍微修改了代码以尝试获取此值。
if (type.ToLower() == "ex")
{
recip = Globals.ThisAddIn.Application.GetNamespace("MAPI").CreateRecipient(address);
if (recip.DisplayType == OlDisplayType.olDistList)
{
sAddress = recip.AddressEntry.GetExchangeDistributionList().PrimarySmtpAddress;
}
else
{
sAddress = recip.AddressEntry.GetExchangeUser().PrimarySmtpAddress;
}
}
else
{
sAddress = address.Replace("'", "");
}
问题是recip.DisplayType
null 除非在获得收件人并在该对象上调用 DisplayType 后有一小段延迟。
有一个更好的方法吗?
我将代码更改为以下,但我担心这不适用于所有 DisplayTypes,我什至不确定大多数类型是什么(选项显示在此处http://msdn.microsoft.com/en -us/library/microsoft.office.interop.outlook.oldisplaytype%28v=office.14%29.aspx )
private static string GetSmtpAddress(AddressEntry addressEntry)
{
string address;
if (addressEntry.Type == "ex")
{
if (addressEntry.DisplayType == OlDisplayType.olDistList)
{
address = addressEntry.GetExchangeDistributionList().PrimarySmtpAddress;
}
else
{
address = addressEntry.GetExchangeUser().PrimarySmtpAddress;
}
}
else
{
address = addressEntry.Address;
}
return address;
}