2013-05-15 53 views
2

我的目標是以某種方式讀取outlook .msg文件中的書籤,然後用不同的文本替換它們。我想用C#來做到這一點。用C#讀取MSG文件中的書籤

我知道如何訪問正文並更改文本,但想知道是否有直接訪問所有書籤列表及其位置的方法,以便我可以輕鬆地替換它們,而不是通過整個身體文本,分裂,等等等等...

編輯:this is how a bookmark window looks like從這個窗口可以分配書籤,但應該可以通過c#獲得這個列表。

enter image description here

任何相關的信息表示讚賞。 在此先感謝。

+1

我覺得很愚蠢,但是您的意思是電子郵件中的書籤是什麼意思? –

+0

你是指郵件正文中的超鏈接嗎? – J0e3gan

+1

如果您按下ctrl + shift + F5 您將收到書籤窗口,從這裏您可以爲單詞/文本分配書籤。 – Mana

回答

0

由於展望most often uses Word as it's body editor - 你需要的項目引用添加到Microsoft.Office.Interop.Word.dll然後Inspector.Activate活動期間訪問到Outlook檢查員WordEditor。一旦你有權訪問Word.Document - 這對load up the Bookmarks來說是微不足道的,並且訪問/修改它們的值。

Outlook.Inspector inspector = Globals.ThisAddIn.Application.ActiveInspector(); 
((Outlook.InspectorEvents_10_Event)inspector).Activate +=() => 
{ // validation to ensure we are using Word Editor 
    if (inspector.EditorType == Outlook.OlEditorType.olEditorWord && inspector.IsWordMail()) 
    { 
     Word.Document wordDoc = inspector.WordEditor as Word.Document; 
     if (wordDoc != null) 
     { 
      var bookmarks = wordDoc.Bookmarks; 
      foreach (Word.Bookmark item in bookmarks) 
      { 
       string name = item.Name; // bookmark name 
       Word.Range bookmarkRange = item.Range; // bookmark range 
       string bookmarkText = bookmarkRange.Text; // bookmark text 
       item.Select(); // triggers bookmark selection 
      } 
     } 
    } 
}; 
+0

我引用你說的microsoft.office.interop.word.dll,但是當我寫第一行時,我找不到Globals.ThisAddIn ..... – Mana

+0

你使用的是什麼版本的Visual Studio和Office? [Globals.ThisAddIn由Visual Studio自動生成](http://msdn.microsoft.com/zh-cn/library/vstudio/bhczd18c.aspx),用於Office插件項目。如果你不使用Outlook插件 - 你不會有Globals.ThisAddIn。 – SliverNinja

+0

即時通訊使用vs2005和辦公室2007年 我也有前景interop引用。 – Mana