准备收件人

适用于:Outlook 2013 | Outlook 2016

客户端应用程序通过将收件人的短期条目标识符转换为长期条目标识符,并可能添加、更改或重新排序属性来准备收件人。 您可以为邮件准备属于收件人列表的收件人,也可以准备与邮件无关的收件人。 通常,客户端直接调用 IAddrBook::P repareRecips ,将短期条目标识符转换为包含在公用地址对话框中的收件人的长期条目标识符。 对于与传出邮件关联的收件人,收件人准备由名称解析过程处理。

若要准备收件人列表,请调用 IAddrBook::P repareRecipsPrepareRecips 接受 ADRLIST 结构和属性标记列表。 ADRLIST 结构包含要准备的收件人,而属性标记列表表示每个收件人应支持的属性。 PrepareRecips 尝试将属性标记列表中包含的属性放在 ADRLIST 结构的开头。 如果 ADRLIST 结构中缺少列表中的任何属性,MAPI 将调用通讯簿提供程序提供这些属性。 如果只需要检查长期条目标识符,请为 lpSPropTagArray 参数传递 NULL。

例如,假设您正在处理五个收件人。 所有五个收件人都按以下顺序显示在 ADRLIST 结构中,并具有以下属性:

  1. PR_ENTRYID (PidTagEntryId)

  2. PR_DISPLAY_NAME (PidTagDisplayName)

  3. PR_SEARCH_KEY ( PidTagSearchKey)

  4. PR_EMAIL_ADDRESS (PidTagEmailAddress)

  5. PR_ADDRTYPE (PidTagAddressType)

前两个收件人的 ADRLIST 结构中包含其他三个属性。

  1. PR_ACCOUNT (PidTagAccount)

  2. PR_GIVEN_NAME (PidTagGivenName)

  3. PR_SURNAME ( PidTagSurname)

由于所有收件人都需要将 PR_ADDRTYPEPR_ENTRYIDPR_HOME_TELEPHONE_NUMBER (PidTagHomeTelephoneNumber) 属性作为前三个属性,因此请创建一个包含这些属性的属性标记数组,并传递给 PrepareRecips 及其 ADRLIST 结构。 PrepareRecips 调用每个收件人的 IMAPIProp::GetProps 方法来检索 PR_HOME_TELEPHONE_NUMBER因为它当前 不是 ADRLIST 结构的一部分。 当 PrepareRecips 返回时,收件人列表表示收件人的合并列表,其中 每个收件人首先显示 ADRLIST 结构中包含的属性。

收件人 1 和收件人 2 的收件人列表包括按以下顺序的属性:

  1. PR_ADDRTYPE

  2. PR_ENTRYID

  3. PR_HOME_TELEPHONE_NUMBER

  4. PR_DISPLAY_NAME

  5. PR_SEARCH_KEY

  6. PR_EMAIL_ADDRESS

  7. PR_ADDRTYPE

  8. PR_ACCOUNT

  9. PR_GIVEN_NAME

  10. PR_SURNAME

收件人 3、4 和 5 的收件人列表按以下顺序包括属性:

  1. PR_ADDRTYPE

  2. PR_ENTRYID

  3. PR_HOME_TELEPHONE_NUMBER

  4. PR_DISPLAY_NAME

  5. PR_SEARCH_KEY

  6. PR_EMAIL_ADDRESS

  7. PR_ADDRTYPE

作为调用 IAddrBook::P repareRecips 以使用属性的替代方法,请调用每个收件人的 IMAPIProp::GetProps 方法,并在必要时调用 其 IMAPIProp::SetProps 方法。 如果只涉及一个收件人,则任一技术都满意。 但是,当涉及多个收件人时,调用 PrepareRecips (而不是 IMAPIProp 方法)可以节省时间,并且,如果远程操作,则调用许多远程过程。 PrepareRecips 在单个呼叫中处理所有收件人, 而 GetPropsSetProps 则针对每个收件人进行一次呼叫。