使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

摘要

為了保證自訂屬性或欄位的一致性使用,Microsoft Office Outlook 2003 Service Pack 2 (SP2) 和更新版本的 Outlook 限制了可將自訂屬性導入 Outlook 資料存放區的部分方式。 例如,您可以在 Outlook 個人資料夾 (.pst) 檔案中以特定方式導入自訂屬性。

簡介

本文將執行下列操作:

  • 提供自訂屬性的概觀。

  • 說明 Outlook 2003 SP2 和更新版本的 Outlook 如何變更自訂屬性的行為。

  • 探討建立新屬性的一些最佳做法,以及我們不建議的一些方法。

其他相關資訊

關於自訂屬性

Outlook 等電子郵件程式會使用自訂屬性,在郵件中新增更多資訊。 一般而言,電子郵件程式會將此額外資訊用於特定用途。 不過,還有其他方式可以使用自訂屬性。 例如,如果您使用 Outlook 自訂表單,而這些表單包含自訂欄位,則可將自訂屬性新增至郵件或專案。 自訂屬性常用於新增更多資訊以供追蹤之用。 自訂屬性也會用來新增使用者不需要查看的資料。 自訂解決方案也可以將自訂屬性新增至一般專案。 自訂解決方案會以程式設計方式將自訂屬性新增至郵件或專案,而不需要自訂表單。

您可以在 Outlook 中以 .msg 檔案格式和 .oft 檔案格式保留自訂屬性。 此外,如果寄件者 使用 [使用 Outlook RTF 格式 傳送] 選項,自訂屬性仍可保留在透過網際網路傳送的電子郵件訊息中。 此選項會將郵件的 MAPI 區段封裝為 [傳輸中性封裝格式] (TNEF) ,然後在收到郵件時解碼 TNEF。

在下列案例中,寄件者可以傳送具有自訂屬性的電子郵件:

  • 隨即傳送一次性自訂表單。 在一次性表單中,表單會內嵌在郵件中。 表單不會發佈到其他位置。 如需一次性表單的詳細資訊,請參閱下列文章:

    將包含 [專案] (一次性表單的表單儲存)

  • 隨即傳送已發佈的自訂表單。 在此情況下,由於表單不是內嵌在郵件中,因此不會傳送自訂表單。 不過,表單上使用的任何自訂屬性仍會包含在郵件中。

注意 視使用自訂屬性的上下文而定,有許多方式可以參照自訂屬性。 在 Outlook 使用者介面中,例如在 欄位選擇器中,自訂屬性稱為使用者定義欄位或自訂欄位。 在 Outlook 物件程式庫中,自訂屬性可稱為使用者屬性,或是 UserProperties 集合之後的使用者定義屬性。 在 MAPI 中,自訂欄位稱為具名屬性。 MAPI 提供可執行下列動作的設施:

  • 指派屬性的名稱

  • 將名稱對應至唯一識別碼

  • 使對應持續存在

如需如何在 MAPI 中實作具名屬性的詳細資訊,請造訪下列 MSDN 網站:

HTTP://msdn2.microsoft.com/en-us/library/ms529055.aspx 附注 在 Exchange 環境中,本文所用的「市集」一詞指的是整個信箱市集 (資料庫) 。 此字詞不會參照個別使用者的信箱市集。 組織中可能有一或多個 Exchange 信箱資料庫。

Outlook 中的行為變更

已變更 Outlook 中的 MAPI 實作,以控制如何建立自訂屬性。 為了保證自訂屬性的一致性使用,自訂屬性必須在組織或 Outlook 用戶端中使用。 自訂屬性一經使用或註冊,自訂屬性便可自由傳送至其他 Outlook 用戶端或執行Exchange Server的伺服器。 您也可以透過網際網路傳送自訂屬性。

電子郵件訊息通常會透過網際網路以 MIME 格式傳送。 當 Outlook 收到網際網路電子郵件訊息時,郵件會轉換成 MAPI 標記法。 以下是網際網路電子郵件通訊協定的範例:

  • 流行

  • Imap

  • HTTP (Outlook.com)

根據預設,Outlook 不再啟用網際網路郵件來建立新的自訂屬性。 只有已在預設郵件傳遞存放區中建立的屬性會保留內送電子郵件訊息。 此變更大多會影響以封裝的 TNEF (Winmail.dat) 傳送的郵件,寄件者已 使用 Outlook RTF 格式的 [傳送] 選項 。 不過,包含 X 訊息標題屬性的網際網路訊息也會受到影響。

注意:包含在 Exchange 組織中傳送自訂屬性的郵件不會受到這些變更影響。

自訂屬性也可以儲存在 .msg 檔案和 .oft 檔案中。 如果使用者開啟具有自訂屬性的 .msg 檔案,當郵件儲存、轉寄等時,這些自訂屬性就不會儲存到預設儲存區。 通常.oft 檔案是用來備份 Outlook 自訂表單。 使用 .oft 檔案時,新行為會套用至所有類型的專案。 自訂表單不會開啟。 郵件反而會出現在該特定專案類型的預設表單中。

總之,這項設計上的變更可能會導致發生兩件事:

  • Outlook 會忽略非現有的自訂屬性。 如果遞送商店中不存在自訂屬性,則不會建立該屬性,而且其值將會遺失。 如果自訂屬性已存在於配送商店中,則其值會持續存在。 這項變更適用于下列各項:

    • 有 TNEF 及其內嵌郵件的網際網路電子郵件訊息。

    • S/MIME 訊息。

    • 當您將 .msg 檔案放到 Outlook 專案視窗中,將檔案新增至另一個專案時,就會傳送 .msg 檔案。 當您將 .msg 檔案放到 Outlook 主視窗以將檔案新增至資料夾或 Microsoft Word 視窗中使用 Word 做為電子郵件編輯器時,這項變更也適用于 .msg 檔案。

    • 使用者按兩下或以滑鼠右鍵按一下以開啟的 .msg 檔案。

  • Outlook 會忽略一次性表單定義。 如果一次性表單指定自訂屬性,且該自訂屬性不存在於送貨存放區,則不會呈現一次性表單。 使用者反而會看到該特定專案類型的預設表單。 這項變更適用于包含 TNEF 中封裝之一次性表單定義的網際網路電子郵件訊息。 這項變更也適用于使用者按兩下或以滑鼠右鍵按一下開啟的 .oft 檔案。

建立新屬性的最佳做法及其他方式

設計及開發自訂解決方案的方法有很多種。 其中一些方法會被視為最佳做法。 其他方法可能也可運作,但我們不建議使用這些方法,原因有一或多個。

最佳做法:以程式設計方式新增自訂欄位

各種 API 可用來以程式設計方式將自訂欄位新增至專案。 若要這麼做,請使用 Outlook 物件程式庫中的 UserProperties.Add 方法, (「Outlook.Application」) 。 下列程式碼說明此最佳作法。

Set myProp = myItem.UserProperties.Add("MyPropName", olText)

您也可以使用 CDO 物件程式庫 (「MAPI。會話「) 新增自訂欄位。 如需詳細資訊,請造訪下列 MSDN 網站:

HTTP://msdn2.microsoft.com/en-us/library/ms527518.aspx 對於 C++ 開發人員,延伸 MAPI 可用來新增具名屬性。 如需詳細資訊,請造訪下列 MSDN 網站:

HTTP://msdn2.microsoft.com/en-us/library/ms529684.aspx

最佳做法:使用包含自訂欄位的已發佈自訂表單

Outlook 大多信任已發佈的自訂表單。 不過,Outlook 不信任未發佈的表單或一次性表單。 這包括 .oft 檔案。 因此,當您設計自訂表單解決方案時,強烈建議您發佈自訂表單。 您應該設計表單,讓表單不會變成一次性表單。 只要表單已發佈,該表單就不會受到 Outlook 變更的影響。
 
當您將 .oft 檔案發佈到其他市集時,預設儲存區可讓您在該存放區中建立屬性。 此外,當您建立具有自訂屬性的自訂表單,並將它發佈到適當的表單庫或資料夾時,自訂屬性會在受影響的存放區中建立。

最佳做法:以程式設計方式部署自訂表單

如果您正在開發由其他人使用的 Outlook 自訂表單,有幾個方法可以使用。 您使用的方法取決於幾個因素。 這些因素包括表單類型、誰將使用表單、使用表單的位置等等。 一般說來,如果許多人會使用自訂表單,我們建議您在組織表單庫中發佈該表單。 不過,如果無法這樣做,您可能會想要將表單發佈到共用資料夾或某些使用者的個人表單庫中。 您可以在 Outlook 物件程式庫中使用 CreateItemFromTemplate 方法,以程式設計方式安裝自訂表單。 您可以使用 CreateItemFromTemplate 方法開啟 .oft 檔案,然後使用 PublishForm 方法發佈表單。 在此情況下,.oft 檔案不會受到自訂屬性變更的影響。

不建議:部署或傳送 .oft 檔案供使用者開啟

您可以將 Outlook 自訂表單儲存為 .oft 檔案。 這些表單可以包含自訂欄位、使用者介面變更,以及自訂 Microsoft Visual Basic Scripting Edition (VBScript) 程式碼來新增功能至表單。 雖然 Outlook 已經包含防止 .oft 檔案中 VBScript 程式碼執行的功能,但 Outlook 現在也會限制 .oft 檔案的使用。 如果 .oft 檔案包含自訂屬性,且使用者先前未使用過這些自訂屬性,則自訂屬性不在使用者的預設儲存區中。 當使用者按兩下檔案時,Outlook 不會呈現自訂表單。 不過,若要讓 Outlook 開啟儲存為 .oft 檔案的自訂表單,請按一下 [ 檔案],按一下 [ 新增],然後按一下 [ 選擇表單]。 接著,您可以 在檔案系統中將位置變更為 [使用者範本],然後按一下 [ 流覽 ] 開啟 .oft 檔案。 表單隨即開啟,您可以將自訂屬性儲存至預設的儲存區。

不建議使用:使用 AllowNamedProps 登錄機碼

有些組織可能有充分理由可在整個組織中使用某些自訂屬性。 如果使用多個商店,您可能會想要確認一組自訂屬性可以新增至所有商店。 因此,Outlook 2003 SP2 及更新版本支援用戶端登錄機碼,可指定可以建立哪些自訂屬性。 若要指定應該啟用哪些自訂屬性,請在下列登錄機碼下定義自訂屬性: HKEY_CURRENT_USER\Software\Microsoft\Office\<版本>\Outlook\AllowedNamedProps\

附注 在此登錄機碼中,<版本> 是您所使用之 Outlook 版本的預留位置。 針對 Outlook 2003,版本號碼為 11.0。 針對 Outlook 2007,版本號碼為 12.0。 版本號碼將會在較新版本的 Outlook 中增加。

登錄專案的整體登錄機碼結構為:

<GUID>

<屬性名稱>

「Kind」 (dword)

「ID」 (dword)
「Type」 (dword) 下列預留位置用於登錄機碼結構:

  • <GUID>:包含指定屬性集的 GUID。 您在 Outlook 自訂表單上使用的 Outlook 自訂欄位或屬性,都具有 GUID {00020329-0000-0000-C000-00000000046}。 在 MAPI 中,GUID 稱為PS_PULIC_STRINGS。 不過,自訂 MAPI 程式可能有自己的自訂屬性 GUID。

  • <屬性名稱>:指定屬性的名稱。 如果屬性是以字串命名,則 <屬性名稱> 是該屬性的實際字串名稱。 如果屬性是以識別碼命名,則會忽略此登錄機碼的值。 不過,您必須為屬性命名唯一名稱,以便將屬性儲存在登錄中。 如果 Kind 鍵設為 1 或 <> 0,登錄機碼名稱會決定屬性的名稱。 如果 Kind 鍵不等於 1,此登錄機碼名稱將被忽略。

  • 「Kind」 (dword) :指定屬性是以識別碼或字串命名。 如果值為 0,則屬性會以識別碼命名。 名稱是由識別碼指定的數值。 如果值為 1,則屬性會以字串命名。 當 「Kind」 不存在時,此設定是預設設定。

  • 「ID」 (dword) :包含以識別碼命名之屬性的識別碼名稱。 如果 Kind 鍵設為 0,則需要這項資訊。 如果 Kind 鍵設為 1,則會忽略此資訊。

  • 「Type」 (dword) :指定屬性類型。

需要此登錄機碼,但目前並未使用登錄機碼。 下表根據 MAPI 類型列出此登錄機碼的可能值。

MAPI 類型

描述

PT_UNSPECIFIED

0

保留以供介面使用, (類型對來電者來說不重要)

PT_Null

1

Null 屬性值

PT_I2

2

已簽署的 16 位值

PT_LONG

3

已簽署 32 位值

PT_R4

4

4 位元組浮點

PT_DOUBLE

5

浮點雙

PT_CURRENCY

6

小數點右方的 64 位 (小數 w/4 位數)

PT_APPTIME

7

應用程式時間

PT_ERROR

10

32 位錯誤值

PT_BOOLEAN

11

16 位布林值 (非零 true)

PT_OBJECT

13

屬性中的內嵌物件

PT_I8

20

8 位元組的已簽署整數

PT_STRING8

30

Null 終止 8 位字串

PT_UNICODE

31

Null 終止 Unicode 字串

PT_SYSTIME

64

FILETIME 64 位整數,自 1601 年 1 月 1 日起包含 100ns 的期間

PT_CLSID

72

OLE GUID

PT_BINARY

258

未解譯 (陣列)

PT_MV_UNSPECIFIED

4096

PT_MV_Null

4097

PT_MV_I2

4098

PT_MV_LONG

4099

PT_MV_R4

4100

PT_MV_DOUBLE

4101

PT_MV_CURRENCY

4102

PT_MV_APPTIME

4103

PT_MV_ERROR

4106

PT_MV_BOOLEAN

4107

PT_MV_OBJECT

4109

PT_MV_I8

4116

PT_MV_STRING8

4126

PT_MV_UNICODE

4127

PT_MV_SYSTIME

4160

PT_MV_CLSID

4168

PT_MV_BINARY

4354

以下是如何設定依字串命名屬性的範例:

名稱:「MyStringFieldName1」

類型:PT_LONG

[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\AllowedNamedProps\{00020329-0000-0000-C000-000000000046}\MyStringFieldName1] 「Type」=dword:00000003
以下是如何設定具名依據識別碼屬性的範例:

識別碼:0x0330

類型:PT_LONG

[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\AllowedNamedProps\{00020329-0000-0000-C000-000000000046}\MyMAPIProp1] 「Kind」=dword:00000000 「ID」=dword:00000330 「Type」=dword:00000003


在這兩個範例中,登錄在登錄編輯程式中看起來如下所示:


{00020329-0000-0000-C000-000000000046}
 

MyStringFieldName1

輸入 = 3
MyStringFieldName2

輸入 = 3
{00020329-0000-0000-C000-000000000046}

MyMAPIProp1

Kind = 0
ID = 330

輸入 = 3
MyMAPIProp2

Kind = 0
ID = 331
輸入 = 3

不建議:重新啟用建立屬性的功能

您可以將三個登錄機碼部署到用戶端電腦,以停用自訂屬性的封鎖,並將 Outlook 還原為先前的行為。 這些登錄機碼受群組原則支援。 下列登錄機碼可以將 Outlook 2003 還原為先前的行為:

注意 下列登錄機碼不會將 Outlook 2007 還原為先前的行為。

  • AllowTNEFtoCreateProps (HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\Options\Mail] 「AllowTNEFtoCreateProps」=dword:00000000) :如果值為 0,TNEF/MIME 就無法建立新的非 Outlook 自訂屬性。 此值為預設值。 如果值為 1,TNEF/MIME 可以建立新的非 Outlook 自訂屬性。

  • AllowMSGFilestoCreateProps:如果值為 0,.msg 檔案和 .oft 檔案無法建立新的非 Outlook 自訂屬性。 此值為預設值。 如果值為 1,.msg 檔案和 .oft 檔案可以建立新的非 Outlook 自訂屬性。

  • DisallowTNEFPreservation:若要輕鬆移轉至此新行為,Outlook 會在未建立自訂屬性時保留原始的 TNEF。 原始的 TNEF 會儲存在已儲存專案的二進位串流中。 Outlook 會使用下列屬性標記來儲存串流:

    PR_TNEF_UNPROCESSED_PROPS PROG_TAG (PT_BINARY、0x0e9C) 。 [HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\Options\Mail] 「DisallowTNEFPreservation 」=dword:000000000
    登錄設定會控制 Outlook 是否建立PR_TNEF_UNPROCESSED_PROPS屬性。

    注意 當您將郵件內嵌到另一封郵件做為附件時,系統會移除郵件中的PR_TNEF_UNPROCESSED_PROPS屬性。 當您轉寄郵件或回復郵件時,也會移除PR_TNEF_UNPROCESSED_PROPS屬性。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×