0

我正在尝试 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.DisplayTypenull 除非在获得收件人并在该对象上调用 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;
        }
4

1 回答 1

1

您需要先解析收件人 - 调用 CreateRecipient 后,调用 Recipient.Resolve。

于 2013-02-08T23:40:56.140 回答