使用C#读取Outlook MSG文件中的书签

时间:2013-05-15 08:00:59

标签: c# outlook vsto bookmarks msg

我的目标是以某种方式能够在outlook .msg文件中读取书签,然后用不同的文本替换它们。我想用C#做这个。

我知道如何访问正文并更改文本,但是想知道是否有办法直接访问所有书签的列表及其位置,以便我可以轻松替换它们,而不是通过全身文本,分裂等等...

编辑:this is how a bookmark window looks like从此窗口可以指定书签,但应该可以通过c#获取此列表。

enter image description here

任何相关信息表示赞赏。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

自Outlook most often uses Word as it's body editor - 您需要向 Microsoft.Office.Interop.Word.dll 添加项目引用,然后在{{}期间访问Outlook Inspector的WordEditor {3}}事件。一旦您有权访问Inspector.Activate,就可以轻松访问Word.Document并访问/修改其值。

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
            }
        }
    }
};