2010-03-08 97 views
3

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

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

例如,如果我把这个词测试的到RadEditor箱,并将其发送...的电子邮件显示了文字更改为:特斯塔€™的

它好像“代替使用字符'的,因为如果我使用后,该文本将显示出来就好了。如果我在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 

回答

2

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

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

例如:

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

非常感谢您的回复。我在上面添加到我的原始帖子中,因为我没有看到在此评论字段中包含示例代码的方法。 再次,我敢肯定这只是我做错了,因为我不知道我完全理解编码问题......任何建议? 谢谢! – 2010-03-10 14:49:02

1

大厦dave wanta的回答,您应该设置MailMessage由你控制使用的编码的BodyEncoding财产(可能是System.Text.Encoding.Unicode),或你的文本转换为使用您的MailMessage对象使用的编码System.Text.Encoding.Convert