IAddrBook::ResolveName
適用対象: Outlook 2013 | Outlook 2016
名前解決を実行し、受信者リスト内の受信者にエントリ識別子を割り当てます。
HRESULT ResolveName(
ULONG_PTR ulUIParam,
ULONG ulFlags,
LPSTR lpszNewEntryTitle,
LPADRLIST lpAdrList
);
パラメーター
ulUIParam
[in]ユーザーにあいまいさを解決するように求めるダイアログ ボックスの親ウィンドウへのハンドル (指定されている場合)。
ulFlags
[in]解決プロセスのさまざまな側面を制御するフラグのビットマスク。 次のフラグを設定できます。
AB_UNICODEUI
lpszNewEntryTitle が UNICODE 文字列であることを示します。
MAPI_CACHE_ONLY
名前解決を実行するには、オフライン アドレス帳のみを使用します。 たとえば、このフラグを使用すると、クライアント アプリケーションがグローバル アドレス一覧 (GAL) をキャッシュ交換モードで開き、クライアントとサーバー間のトラフィックを作成せずにキャッシュからそのアドレス帳内のエントリにアクセスできます。 このフラグは、Exchange アドレス帳プロバイダーによってのみサポートされます。
MAPI_DIALOG
ユーザーに追加の名前解決情報を求めるダイアログ ボックスを表示します。 このフラグが設定されていない場合、ダイアログ ボックスは表示されません。
MAPI_UNICODE
アドレス一覧で返されるプロパティが、PT_STRING8ではなくPT_UNICODE型であることを示します。
lpszNewEntryTitle
[in]ユーザーに受信者の入力を求めるダイアログ ボックス内のコントロールのタイトルのテキストへのポインター。 タイトルは、受信者の種類によって異なります。 lpszNewEntryTitle パラメーターは NULL にすることができます。
lpAdrList
[in-out]解決する受信者名のリストを含む ADRLIST 構造体へのポインター。 この ADRLIST 構造体は 、IAddrBook::Address メソッドによって作成できます。
戻り値
S_OK
名前解決プロセスが成功しました。
MAPI_E_AMBIGUOUS_RECIP
lpAdrList パラメーター内の少なくとも 1 人の受信者が、アドレス帳内の複数のエントリと一致しました。 通常、この値は、ダイアログ ボックスの表示を禁止するMAPI_DIALOG フラグが設定されている場合に返されます。
MAPI_E_NOT_FOUND
lpAdrList パラメーター内の少なくとも 1 人の受信者を解決できません。 通常、この値は、ダイアログ ボックスの表示を禁止するMAPI_DIALOG フラグが設定されている場合に返されます。
注釈
クライアントとサービス プロバイダーは 、ResolveName メソッドを呼び出して名前解決プロセスを開始します。 未解決のエントリは、エントリ識別子または PR_ENTRYID (PidTagEntryId) プロパティをまだ持たないエントリです。
ResolveName は、 lpAdrList パラメーターで渡されたアドレス一覧内の未解決のエントリごとに、次のプロセスを実行します。
受信者のアドレスの種類が SMTP アドレス ( displayname@ domain.top-level-domain) の形式に準拠している場合、 ResolveName によって 1 回限りのエントリ識別子が割り当てられます。
PR_AB_SEARCH_PATH (PidTagAbSearchPath) プロパティ内の各コンテナーについて、ResolveName は IABContainer::ResolveNames メソッドを呼び出します。 ResolveNames は 、未解決の各受信者の表示名と、いずれかのエントリに属する表示名との照合を試みます。
コンテナーが ResolveNames をサポートしていない場合、 ResolveName は 、PR_ANR (PidTagAnr) プロパティ制限を使用してコンテナーのコンテンツ テーブルを制限します。 この制限により、コンテナーは"最適な推測" タイプの検索を実行して、一致する受信者を検索します。 すべてのコンテナーで 、PR_ANR プロパティの制限がサポートされている必要があります。
コンテナーが複数の名前と一致する受信者を返すと、MAPI_DIALOG フラグが設定されている場合、 ResolveName はダイアログ ボックスを表示します。これにより、ユーザーは正しい名前を選択できます。
PR_AB_SEARCH_PATH プロパティ内のすべてのコンテナーが呼び出され、一致するものが見つからない場合、受信者は未解決のままです。
1 つ以上の受信者が未解決の場合、 ResolveName はMAPI_E_NOT_FOUNDを返します。 ダイアログ ボックスで解決できないあいまいな解決が 1 つ以上の受信者にあった場合、または MAPI_DIALOG フラグが設定されていないため、 ResolveName はMAPI_E_AMBIGUOUS_RECIPを返します。 一部の受信者があいまいで解決できない場合、 ResolveName はどちらのエラー値も返すことができます。
名前を解決できない場合、クライアントは、特別な形式のアドレスとエントリ識別子を持つ 1 回限りのアドレスを作成できます。 1 回限りのエントリ識別子の形式の詳細については、「1 回 限りのエントリ識別子」を参照してください。 1 回限りのアドレスの形式の詳細については、「1 回 限りのアドレス」を参照してください。
MAPI では、 ADRLIST の Unicode 文字列と ResolveName への新しいエントリ タイトル パラメーターがサポートされています。MAPI_UNICODE フラグを設定すると、 ADRENTRY 構造体で次のプロパティが型PT_UNICODEとして返されます。
PR_ADDRTYPE (PidTagAddressType)
PR_DISPLAY_NAME (PidTagDisplayName)
PR_EMAIL_ADDRESS (PidTagEmailAddress)
PR_TRANSMITABLE_DISPLAY_NAME (PidTagTransmittableDisplayName)
ただし、 PR_7BIT_DISPLAY_NAME (PidTag7BitDisplayName) プロパティは常に型PT_STRING8として返されます。
MFCMAPI リファレンス
MFCMAPI のサンプル コードについては、次の表を参照してください。
ファイル | 関数 | �R�����g |
---|---|---|
MAPIABFunctions.cpp |
AddOneOffAddress |
MFCMAPI は ResolveName メソッドを使用して、メッセージに追加する前に 1 回限りのアドレスを解決します。 |
MAPIABFunctions.cpp |
AddRecipient |
MFCMAPI では 、ResolveName メソッドを使用して、表示名でアドレス帳エントリを検索します。 |