c# - 使用C#阅读Outlook MSG文件中的书签

我的目标是以某种方式能够阅读Outlook .msg文件中的书签,然后将其替换为其他文本。我想用C#做到这一点。

我知道如何访问正文并更改文本,但是想知道是否有一种方法可以直接访问所有书签的列表及其位置,以便我可以轻松地替换它们,而不是遍历整个正文并将其拆分等等,等等。

编辑:this is how a bookmark window looks like从此窗口中可以分配书签,但是应该可以通过c#获得此列表。



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

最佳答案

由于Outlook most often uses Word as it's body editor-您需要添加对Microsoft.Office.Interop.Word.dll的项目引用,然后在WordEditor事件期间访问Outlook检查器的Inspector.Activate。一旦可以访问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
            }
        }
    }
};

本文翻译自 https://stackoverflow.com/questions/16559739/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 c# outlook vsto bookmarks msg


相关文章:

c# - 如何将十进制值四舍五入到一个精度,以使总位数不超过15?

c# - WPF绑定多个条件

c# - 使用TCP的C#HTTPS代理

c# - C#/ Outlook-检索特定的全局联系人

c# - 将Outlook联系人获取到基于C#表单的应用程序中

c# - 为什么dsofile.dll仍需要Office安装?

c# - 如何从背后的代码单击Excel功能区按钮

c# - 将MemoryStream写入响应对象

html - Outlook.com,Microsoft Exchange和Hotmail.com中的HTML HTML邮件为空

c# - Visual Studio 2008 Office Interop 2003与2007