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.DisplayType、受信者を取得してそのオブジェクトで DisplayType を呼び出した後、わずかな遅延がない限り、それが null であることです。

これを行うより良い方法はありますか?

コードを次のように変更しましたが、これがすべての 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 に答える