【问题标题】:VB.Net MailMessage text encoding issueVB.Net MailMessage 文本编码问题
【发布时间】:2011-01-25 04:18:27
【问题描述】:

我有一个 ASP.Net 应用程序,它允许用户将文本写入 Telerik RadEditor 控件,然后发送电子邮件。

出于某种原因,我有时会在生成的电子邮件中出现奇怪的字符。

例如,如果我将单词 Test's 放入 RadEditor 框中并发送...电子邮件会显示,文本更改为:Test's

似乎使用 ' 字符代替了 ',因为如果我使用后者,文本会显示得很好。如果我在 ASP.Net 应用程序界面中提取保存的记录,它看起来就很好。当我查看它所存储的 MS SQL 表的记录中的文本时,它看起来也很好。

我正在使用 MailMessage 创建电子邮件。在我使用 SmtpClient 发送消息之前,我已经检查了正在发送的字符串,它在他的点上看起来很好。但是,一旦电子邮件显示出来,我就会收到奇怪的文字(测试)。

我猜我遇到了编码/解码问题,但我不确定如何解决这个问题。

有人有什么想法吗?

谢谢!

继续--->

我尝试将它添加到我的电子邮件类的构造函数中,有/没有 mybase,但没有效果。

  Public Sub New(ByVal EmailDate As DateTime, ByVal LogoPath As String)
        MyBase.New()
        MyBase.BodyEncoding = Encoding.GetEncoding("iso-8859-1")

        ‘BodyEncoding = Encoding.GetEncoding("iso-8859-1")
        Me.EmailDate = EmailDate
        Me.LogoPath = LogoPath
    End Sub

我还尝试在创建新的 SmtpClient 之前将其添加到调用电子邮件类的表单后面的代码中,但这似乎也不正确。

Try
    returnEmail.BodyEncoding = Encoding.GetEncoding("iso-8859-1")
    Dim smtpCli As New SmtpClient
    smtpCli.Send(returnEmail)
Catch ex As Exception
    ScriptManager.RegisterStartupScript(Me, Me.GetType, "smtpError", "alert('There was an error sending the email:\n* " & ex.Message & "');", True)
End Try

【问题讨论】:

    标签: asp.net vb.net encoding character-encoding smtp


    【解决方案1】:

    您遇到的问题是您使用的是非 ascii 字符。该引号不是单引号(您已经确定),它通常是反引号或其他字符(在 MS Word 环境中最常用)。这些通常也可以在 ISO-8859-1 字符集中找到。

    尝试在 MailMessage 对象上设置 BodyEncoding 属性。

    例如:

    msg.BodyEncoding = Encoding.GetEncoding("iso-8859-1")
    

    【讨论】:

    • 非常感谢你们的回复。我在上面的原始帖子中添加了内容,因为我没有看到将示例代码包含在此注释字段中的方法。同样,我确定这只是我做错了,因为我不确定我是否完全理解编码问题……有什么建议吗?谢谢!
    【解决方案2】:

    基于dave wanta 的答案,您应该将MailMessageBodyEncoding 属性设置为您的控件使用的编码(可能是System.Text.Encoding.Unicode),或者将您的文本转换为使用的编码你的 MailMessage 对象使用System.Text.Encoding.Convert

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-08
      • 2011-09-17
      • 1970-01-01
      • 2011-04-30
      • 2016-08-02
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多