RichTextBox 从电子邮件中删除换行符 Headers

RichTextBox removes linebreaks from Email Headers

所以我正在尝试为 outlook 构建一个简单的插件,它将读取电子邮件 headers。获取电子邮件的 headers 很简单,我用 RichTextBox 制作了一个 windows 表单以显示 header (目前我只是推送完整的原始 headers in,将来我想格式化它们并使它们更容易阅读,突出显示更重要的部分等,因此是 RichTextBox)。

我遇到的问题是,一旦我设置了 textbox.Rtf,它就会丢失 header 中的自然换行,这让它们变得一团糟。如果我这样做 textbox.Text,它们会有换行符,因此它们更易于阅读。

我尝试了一些不同的方法来尝试并强制显示新行(例如通过使用 \line 和 \par),但是一旦我使用 .Rtf 似乎永远不会成功。

   Public Class showHeaders

        Public Shared Sub MyMsg(msg As String)
            Dim MsgUserForm1 As New MsgUserForm
            With MsgUserForm1
                MsgUserForm1.Text = "Email headers:"
                .RichTextBox1.Text = msg
                .RichTextBox1.Rtf = .RichTextBox1.Text
                .Show()
                Dim sSaveFolder As String = "C:\headers\"
                .RichTextBox1.SaveFile(sSaveFolder & "Headers.txt")
            End With
        End Sub

        Private Shared Function parseHeaders(inputHeader As String) As String
            inputHeader = inputHeader.Replace("\r\n", "\line")
            inputHeader = inputHeader.Replace("\n", "\line")
            inputHeader = inputHeader.Replace("Received:", "\b Received:\b0")
            inputHeader = "{\rtf1\ansi " + inputHeader + "}"
            Return inputHeader
        End Function

    End Class

欢迎任何帮助,因为我不明白为什么 RichTextBox 会这样。

Vb.net 不允许您使用 \\r\n\n 字符转义为分别代表 Chr(13) 和 Char(10) ) 个字符

相反,您需要这样做。

 inputHeader = inputHeader.Replace(VbNewLine, "\line")
 inputHeader = inputHeader.Replace(VbLF, "\line")

或者您可以使用 Control.Chars.CrLfControl.Chars.Lf