代码之家  ›  专栏  ›  技术社区  ›  IrvineCAGuy

当IsHTML=True时从outlook2016编码的HTML中获取BodytPart中的文本

  •  0
  • IrvineCAGuy  · 技术社区  · 7 年前

    然而,我发现,来自《2016年展望》的信息并非如此。文本正文为空。消息在HtmlBody中。

     System.Web.HttpUtility.HtmlDecode(Regex.Replace(htmlContent, "<(.|\n)*?>", ""))
    

    但不仅仅是清理Office:文字样式一团糟。

    (我似乎无法复制HTML,因此希望您知道它的外观。)

    我在一个VB.net版应用程序。

    1 回复  |  直到 7 年前
        1
  •  1
  •   jstedfast    7 年前

    MimeKit.Text 命名空间。

    您可以使用它来删除html标记并只保留字符数据。

    using (var writer = new StringWriter ()) {
        using (var reader = new StringReader (html)) {
            var tokenizer = new HtmlTokenizer (reader) {
                DecodeCharacterReferences = true
            };
            HtmlToken token;
    
            while (tokenizer.ReadNextToken (out token)) {
                switch (token.Kind) {
                case HtmlTokenKind.Data:
                    var data = (HtmlDataToken) token;
                    writer.Write (data.Data);
                    break;
                case HtmlTokenKind.Tag:
                    var tag = (HtmlTagToken) token;
                    switch (tag.Id) {
                    case HtmlTagId.Br:
                        writer.Write (Environment.NewLine);
                        break;
                    case HtmlTagId.P:
                        if (tag.IsEndTag || tag.IsEmptyElement)
                            writer.Write (Environment.NewLine);
                        break;
                    }
                    break;
                }
            }
        }
    
        return writer.ToString ();
    }