【问题标题】:Read bookmarks in outlook MSG file with C#使用 C# 读取 Outlook MSG 文件中的书签
【发布时间】:2013-05-09 17:04:37
【问题描述】:

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

我知道如何访问正文和更改文本,但想知道是否有办法直接访问所有书签的列表及其位置,以便我可以轻松替换它们,而不是浏览整个正文, 拆分等等...

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

感谢任何相关信息。 提前致谢。

【问题讨论】:

  • 我觉得自己很蠢,但是电子邮件中的书签是什么意思?
  • 您是指邮件正文中的超链接吗?
  • 如果你按 ctrl+shift+F5 你会得到书签窗口,从这里,你可以为文字/文本分配书签。

标签: c# outlook vsto bookmarks msg


【解决方案1】:

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

【讨论】:

  • 我已经引用了你所说的microsoft.office.interop.word.dll,但是当我写第一行时,我找不到Globals.ThisAddIn.....
  • 您使用的是什么版本的 Visual Studio 和 Office? Globals.ThisAddIn is automatically generated by Visual Studio 用于 Office 插件项目。如果您没有使用 Outlook 插件 - 您将没有 Globals.ThisAddIn。
  • 我使用 vs2005 和 office 2007 我还引用了 Outlook 互操作。
猜你喜欢
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多