【问题标题】:Mailkit TextPart IsHtml Content type check does not workMailkit TextPart IsHtml 内容类型检查不起作用
【发布时间】:2020-10-28 20:17:36
【问题描述】:

亲爱的朋友们,

 TextPart textPart = new TextPart();
    textPart.Text = body; // body contains the html text.
    if(textPart.IsHtml)
    {
    }else { }

文本部分 IsHtml 没有给我正确的结果。我知道我的正文包含 HTML,但它仍然处于 else 状态。

然后我研究了这段对话,但当我写下它时。它在 ContentType 上给出错误。 char 不包含 contentType 的信息。

 var bodyii = textPart.Text.FirstOrDefault(x => x.ContentType.IsMimeType("text", "html"));

谁能指出我做错了什么?

【问题讨论】:

    标签: html email mime-types mailkit mimekit


    【解决方案1】:

    textPart.IsHtml 不会检查 textPart.Text 以查看它是否包含 html 标记,它会检查 textPart.ContentType 以查看它是否与 text/html 匹配。当您使用默认构造函数创建TextPart 时,它会创建text/plain,而不是text/html

    你需要使用:

    TextPart textPart = new TextPart ("html");
    

    您的以下代码:

    var bodyii = textPart.Text.FirstOrDefault(x => x.ContentType.IsMimeType("text", "html"));
    

    因为textPart.Textstring 导致错误,这意味着您的LINQ 表达式对char 元素进行操作,而char 没有ContentType 属性。

    换句话说,如果你这样做:

    textPart.Text = "This is some text.";
    

    然后您的 LINQ 表达式,使用 forewach 循环转换为更简单的 C# 代码将如下所示:

    char bodyii = 0;
    foreach (char x in textPart.Text)
    {
        if (x.ContentType.IsMimeType("text", "html"))
        {
            bodyii = x;
            break;
        }
    }
    

    该代码对您有意义吗?不应该这就是编译器给你一个错误的原因。

    【讨论】:

      猜你喜欢
      • 2018-07-23
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 2014-07-25
      • 1970-01-01
      • 2014-08-15
      相关资源
      最近更新 更多