新しい電子メールが送信されたときにすべての電子メールアドレスを読み取る必要がある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、コードが正常に動作している場合は。しかし、もしそれがローカル見通し連絡先(olOutlookContactAddressEntry)であるなら、私は電子メールアドレスを取得する方法についてはわかりません。 GetContactメソッドは私に実際の連絡先を与えますが、3つの電子メールがあるので、電子メールの作成中にユーザーが選択したアドレスを見つける方法はわかりません。
私はすでにこのフォーラムで議論されているように、Exchangeベースの電子メールアドレスをSMTPに変換しようとしました。しかし、パフォーマンスに大きな影響を与えています。 1つのアドレスをSMTPに変換するには約300msかかります。受信者オブジェクトから電子メールアドレスを識別する他の効率的な方法はありますか?
EntryIDでは、この "00000000FE42AA0A18C71A ................"のような非常に長い文字列が得られます。私は実際にあなたが上で指定した16進値にそれを解読する方法を知りません。 – jokesrfunny
その16進文字列では、2文字が1バイトを表します。00000000FE42AA0A18C71A = 0x00,0x00,0x00,0x00,0xFE、0x42,0xAA、0x0A、0x18,0xC7,0x1A –