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;
}