如何使用已命名的属性与电子邮件、 电子邮件地址和在 Outlook 2003 中的图片附件的联系人通讯簿条目

文章翻译 文章翻译
文章编号: 912237 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
展开全部 | 关闭全部

本文内容

简介

联系人通讯簿是 Microsoft Office Outlook 2003 Service Pack 2 (SP2) 中的一项功能就像在早期版本的 Outlook 中一样。本文介绍如何使用已命名的属性与电子邮件、 电子邮件地址和在 Outlook 2003 SP2 中的图片附件的联系人通讯簿条目。

更多信息

有关联系人通讯簿

在 Outlook 2003 SP2 中包括的合同通讯簿提供程序是 contab32.dll。此提供程序显示的联系人通讯簿窗体中的联系人文件夹中的信息。提供程序执行此操作,以便您可以使用联系人地址的电子邮件的联系人通讯簿中。在联系人通讯簿中,有一个电子邮件地址或传真号码的所有联系人由一个单独的列表,为每个电子邮件地址或传真号码都表示。因为联系人可能会有最多三个电子邮件地址,并且三个传真号码可能因此是由最多六个单独的条目,在联系人通讯簿中表示每个联系人。

如何使相关的电子邮件的联系人通讯簿条目

有关联系人的通讯簿条目中的信息为基础的电子邮件,向联系人中的信息的子集。下面的 CONTAB_ENTRYID 结构可用于确定从其中派生的基础的邮件的联系人通讯簿条目。

定义
#pragma pack(4)
typedef struct _contab_entryid
{
  BYTE misc1[4];
  MAPIUID misc2;
  ULONG misc3;
  ULONG misc4;
  ULONG misc5;
  // EntryID of contact in store.
  ULONG cbeid;
  BYTE abeid[1];
} CONTAB_ENTRYID, *LPCONTAB_ENTRYID;
#pragma pack()
的 CONTAB_ENTRYID 结构在联系人通讯簿中定义的条目 id 的 IMailUser 对象使用的格式。 您可以从一个或两个下列源获取这种类型的条目的 id:
  • PR_ENTRYID 列中的联系人通讯簿内容表
  • 从联系人通讯簿打开的 IMailUser 对象的 PR_ENTRYID 属性
要打开基础消息 typecast 联系人通讯簿条目 ID,则此结构。然后,cbeid 和 abeid 成员用作该联系人的条目 id。

示例Microsoft 提供的编程示例只,用于说明不附带任何明示或暗示保证。这包括,但不限于对适销性或针对特定用途的适用性的暗示的担保。本文假定您熟悉演示了正在使用的编程语言以及用于创建和调试过程的工具。Microsoft 支持工程师可以帮助解释某个特定过程的功能,但他们不会修改这些示例以提供额外的功能或构建过程来满足您的具体要求。
HRESULT HrOpenContact(
  LPMAPISESSION lpSession,
  ULONG cbEntryID,
  LPENTRYID lpEntryID,  
  ULONG ulFlags,
  LPMESSAGE* lpContactMessage)
{
  ULONG ulObjType = NULL;
  if (sizeof(CONTAB_ENTRYID) > cbEntryID)
      return MAPI_E_INVALID_PARAMETER;
  LPCONTAB_ENTRYID lpContabEID = (LPCONTAB_ENTRYID) lpEntryID;
  HRESULT hRes = lpSession->OpenEntry(
      lpContabEID->cbeid,
      (LPENTRYID) lpContabEID->abeid,
      NULL,
      ulFlags,
      &ulObjType,
      (LPUNKNOWN*) lpContactMessage);
  return hRes;
}

如何使相关电子邮件地址的联系人通讯簿条目

若要访问一个联系人通讯簿消息中的电子邮件地址的唯一方法是通过基础的邮件上命名的属性。此处介绍的属性是只读的属性。outlook 2003 不支持写入这些属性的解决方案。

定义
DEFINE_OLEGUID(PSETID_Address, MAKELONG(0x2000+(0x04),0x0006),0,0);
#define dispidEmailAddrType 0x8082
#define dispidEmailEmailAddress 0x8083
#define dispidEmail2AddrType 0x8092
#define dispidEmail2EmailAddress 0x8093
#define dispidEmail3AddrType 0x80A2
#define dispidEmail3EmailAddress 0x80A3
DEFINE_OLEGUID(PSETID_Address, MAKELONG(0x2000+(0x04),0x0006),0,0); #define dispidEmailAddrType 0x8082 #define dispidEmailEmailAddress 0x8083 #define dispidEmail2AddrType 0x8092 #define dispidEmail2EmailAddress 0x8093 #define dispidEmail3AddrType 0x80A2 #define dispidEmail3EmailAddress...使用情况

使用下列常量可以填写 MAPINAMEID 结构。这些常量是结构的各种字段。
收起该表格展开该表格
常量字段
PSETID_AdresslpGuid
MNID_IDulKind
dispid
您已填写 MAPINAMEID 结构后,使用 GetIDsFromNames 方法获取当前属性 id 为这些属性。这些属性是字符串的所有属性。

示例Microsoft 提供的编程示例只,用于说明不附带任何明示或暗示保证。这包括,但不限于对适销性或针对特定用途的适用性的暗示的担保。本文假定您熟悉演示了正在使用的编程语言以及用于创建和调试过程的工具。Microsoft 支持工程师可以帮助解释某个特定过程的功能,但他们不会修改这些示例以提供额外的功能或构建过程来满足您的具体要求。
HRESULT HrGetEmail1(LPMESSAGE lpContact)
{
  HRESULT hRes = S_OK;
  LPSPropTagArray lpNamedPropTags = NULL;
  MAPINAMEID NamedID = {0};
  LPMAPINAMEID lpNamedID = &NamedID;
  NamedID.lpguid = (LPGUID)&PSETID_Address;
  NamedID.ulKind = MNID_ID;
  NamedID.Kind.lID = dispidEmailEmailAddress;
  hRes = lpContact->GetIDsFromNames(
      1,
      &lpNamedID,
      NULL,
      &lpNamedPropTags);
  if (SUCCEEDED(hRes) && lpNamedPropTags)
  {
      SPropTagArray sPropTagArray;
      sPropTagArray.cValues = 1;
      sPropTagArray.aulPropTag[0] = CHANGE_PROP_TYPE(lpNamedPropTags->aulPropTag[0],PT_STRING8);
      LPSPropValue lpProps = NULL;
      ULONG cProps = 0;
      hRes = lpContact->GetProps(
        &sPropTagArray,
        NULL,
        &cProps,
        &lpProps);
    if (SUCCEEDED(hRes) &&
      1 == cProps &&
      lpProps &&
      PT_STRING8 == PROP_TYPE(lpProps[0].ulPropTag) &&
      lpProps[0].Value.lpszA)
      {
          printf("Email address 1 = \"%s\"\n",lpProps[0].Value.lpszA);
      }
    MAPIFreeBuffer(lpProps);
    MAPIFreeBuffer(lpNamedPropTags);
  }
  return hRes;
}

如何使联系人通讯簿条目相关图片

outlook 支持一个图片,为每个联系人。此图片存储为基础的邮件中的附件。若要确定哪些附件包含图片,使用 $ PR_ATTACHMENT_CONTACTPHOTO 属性。此处介绍的属性是只读的属性。outlook 不支持写入此属性的解决方案。

定义

#define PR_ATTACHMENT_CONTACTPHOTO PROP_TAG( PT_BOOLEAN, 0x7FFF)
使用情况

PR_ATTACHMENT_CONTACTPHOTO 属性可以用来访问中通过 IMessage::GetAttachmentTable 获得对附件表的列。PR_ATTACHMENT_CONTACTPHOTO 属性访问作为 IAttach 对象的属性。true PR_ATTACHMENT_CONTACTPHOTO 属性的值是否该附件包含联系人图片。图片存储为.jpeg 文件中。使用典型的 MAPI 方法提取到一个文件的此附件。

参考

有关详细的信息,请访问以下 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/bb905282.aspx
http://msdn2.microsoft.com/en-us/library/bb820925.aspx
http://msdn2.microsoft.com/en-us/library/bb821181.aspx

属性

文章编号: 912237 - 最后修改: 2013年10月27日 - 修订: 2.1
这篇文章中的信息适用于:
  • Microsoft Office Outlook 2003?当用于
    • Microsoft Office 2003 Service Pack 2
关键字:?
kbnosurvey kbarchive kbmt kbhowto KB912237 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 912237
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com