2010-03-08 4 views
3

사용자가 Telerik RadEditor 컨트롤에 텍스트를 쓰고 전자 메일을 보낼 수있는 ASP.Net 응용 프로그램이 있습니다.VB.Net MailMessage 텍스트 인코딩 문제

어떤 이유로 저는 생성 된 이메일에 이상한 문자가 표시되는 경우가 있습니다. 종피 € ™의 : 텍스트로 변경하여 내가 단어 시험의 RadEditor 상자에 그것을 보내 넣어 예를 들어

은 ... 이메일이 표시됩니다.

' 문자가 ' 대신 사용 된 것처럼 보입니다. 나중에 사용하면 텍스트가 잘 표시 될 것입니다. ASP.Net 애플 리케이션 인터페이스 내에서 저장된 레코드를 가져 오면 잘 보입니다. 또한 저장된 MS SQL 테이블에 기록 된 텍스트를 볼 때 잘 나타납니다.

전자 메일을 만들 때 MailMessage를 사용하고 있습니다. SmtpClient를 사용하여 메시지를 보내고 바로 그 시점에서 문자열이 제대로 보이기 직전에 문자열이 전송되었는지 확인했습니다. 이메일 메시지가 나타나면 이상한 텍스트가 나옵니다 (Testâ € ™).

인코딩/디코딩 문제가 있다고 생각하지만 어떻게 수정해야할지 모르겠습니다.

누구든지 아이디어가 있습니까?

고맙습니다!.

계속은 --->

나는 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

귀하의 답변에 대해 대단히 감사합니다. 이 주석 필드에 예제 코드를 포함 할 방법이 없기 때문에 위의 원래 게시물에 추가했습니다. 인코딩 문제를 완전히 이해하고 있는지 확신 할 수 없기 때문에 다시 한 번 잘못된 것이라고 생각합니다. 제안 사항은 무엇입니까? 감사! –

1

건물 dave wanta의 대답에, 당신은 당신의 컨트롤에 의해 사용되는 인코딩에 MailMessageBodyEncoding 속성을 설정해야 하나 (System.Text.Encoding.Unicode 수 있습니다), 또는 당신의 텍스트를 변환 귀하의 MailMessage 객체가 사용하는 인코딩 System.Text.Encoding.Convert