如何使用指名的內容關聯到電子郵件訊息、 電子郵件地址以及圖片附件在 Outlook 2003 中的連絡人通訊錄 」 項目

Office 2003 支援已結束

Microsoft 於 2014 年 4 月 8 日結束對 Office 2003 的支援。此變更已影響您的軟體更新和安全性選項。 瞭解這對您的意義為何且如何持續受保護。

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:912237
本文已封存。本文係以「現狀」提供且不會再更新。
簡介
連絡人通訊錄只是做為在舊版的 Microsoft Outlook 是 Microsoft Office Outlook 2003 Service Pack 2 (SP2) 功能。本文將告訴您,如何使用具名屬性 (Property) 來關聯到電子郵件訊息、 電子郵件地址以及圖片附件在 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 物件使用的格式。 您可以從一個或兩個下列來源取得這類的項目識別碼:
  • 連絡人通訊錄內容資料表 PR_ENTRYID 資料行
  • 從 [連絡人] 通訊錄開啟一個 IMailUser 物件 PR_ENTRYID 屬性
若要開啟 [基礎訊息 typecast 連絡人通訊錄項目識別碼,此結構。然後,使用 cbeid 和 abeid 成員來為連絡人 ’s 項目識別碼。

範例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 物件上的屬性。如果 PR_ATTACHMENT_CONTACTPHOTO 屬性的值為 true,附件包含連絡人的圖片。將圖片儲存為.jpeg 檔案。使用典型的 MAPI 方法來擷取這個附件到檔案。
ol2003

警告:本文為自動翻譯

內容

文章識別碼:912237 - 最後檢閱時間:10/27/2013 09:30:26 - 修訂: 2.1

Microsoft Office Outlook 2003

  • kbnosurvey kbarchive kbmt kbhowto KB912237 KbMtzh
意見反應