VB.Net MailMessage проблема кодировки текста - PullRequest
3 голосов
/ 09 марта 2010

У меня есть приложение ASP.Net, которое позволяет пользователю писать текст в элемент управления Telerik RadEditor, а затем отправлять электронное письмо.

По какой-то причине в письме иногда появляются странные символы, которые

Например, если я вставлю слово Test's в поле RadEditor и отправлю его ... появится электронное письмо с текстом, измененным на: Test.

Кажется, что вместо ' использовался символ ' , потому что, если я использую более поздние, текст будет отображаться просто отлично.Если я найду сохраненную запись в интерфейсе приложений 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 ]

2 голосов
/ 09 марта 2010

Проблема, с которой вы сталкиваетесь, заключается в том, что вы используете символы не ascii. Эта цитата не является одиночной цитатой (которую вы уже определили), обычно это обратная цитата или какой-либо другой символ (чаще всего используемый в среде MS Word). Они также обычно встречаются в наборе символов ISO-8859-1.

Попробуйте установить свойство BodyEncoding для объекта MailMessage.

Например:

msg.BodyEncoding = Encoding.GetEncoding("iso-8859-1")
1 голос
/ 09 марта 2010

Опираясь на ответ dave wanta , вы должны либо установить для свойства BodyEncoding MailMessage кодировку, используемую вашим элементом управления (может быть System.Text.Encoding.Unicode), либо преобразовать текст в кодировку, используемую вашим объектом MailMessage, используя System.Text.Encoding.Convert

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...