rails 3 mail gem помогите пожалуйста! - PullRequest
1 голос
/ 11 мая 2011

Хорошо, у меня есть 2 электронных письма, одно из которых имеет японский и английский как в теме, так и в теле, а другое, кажется, находится в iso-8859-1

Когда я делаю email.subject, он правильно отображается в консолии браузер, а также прекрасно сохраняет в моей базе данных (mongodb).поэтому я предполагаю, что он конвертируется в utf-8 должным образом.

Проблема в том, как заставить text_body и html_body сделать то же самое?

Если я пытаюсь сохранить email.html_part.decoded в базе данных, я получаю строку, а не utf-8 error.Также, если я делаю email.html_part.decoded.force_encoding ("UTF-8"), я все равно получаю эту ошибку.Если я просто сделаю email.html_part, это позволит мне сохранить в базе данных, но при просмотре будет выглядеть неправильно.

выглядит так

Content-Type: text / plain;charset = iso-8859-1 Content-Transfer-Encoding: цитируемая для печати Content-ID:

= 0D check! = 0D = 0D To: joe@hotmail.com=0D Тема: Сохранить почти = A32,000 на роскошном отдыхе на яхте Аляски!= 0D От: canada@travel.co.uk=0D Дата: вт, 10 мая 2011 г. 05:39:24 -0500 = 0D = 0D = 0D = 0D = 0D = 0D = 0D

и в Японии все выглядит так:

Тип содержимого: текст / обычный текст;charset = iso-2022-jp Content-Transfer-Encoding: 7bit Content-ID:

От: joe@hotmail.com Кому: sales@domain.com Тема: ($ B% Q% s $ r?) $ Y $ J $$! # (B) «Я не буду есть хлеб» Дата: вт, 10 мая 2011 г. 21:13:55 + 0000

Отрицательные слова образуются в результате наклона глагола.Например, Пан о Таберу ($ B% Q% s $ r?) $ Y $ k! # (B) «Я буду есть хлеб» или «Я ем хлеб» становится Пан о табенаи ($ B% Q% s $r?) $ Y $ J $$! # (B) «Я не буду есть хлеб» или «Я не буду есть хлеб».Простые отрицательные формы на самом деле являются i-прилагательными (см. Ниже) и являются такими же, например, Pan o tabenakatta ($ B% Q% s $ r?) $ Y $ J $ + $ C $?! # (B) "Я сделалне ешьте хлеб ".

Я использую рельсы 3.0.7 и ruby ​​1.9.2-p180

Может кто-нибудь помочь с этим?спасибо Рик

1 Ответ

2 голосов
/ 11 мая 2011

Первое письмо - «quoted-printable», которое можно распаковать, используя String#unpack:

str = "=0D check!=0D =0D To: joe@hotmail.com=0D Subject: Save almost =A32,000 on a luxury Alaskan yacht holiday! =0D From: canada@travel.co.uk=0D Date: Tue, 10 May 2011 05:39:24 -0500=0D =0D =0D =0D =0D =0D =0D".unpack('M').first
=> "\r check!\r \r To: joe@hotmail.com\r Subject: Save almost \xA32,000 on a luxury Alaskan yacht holiday! \r From: canada@travel.co.uk\r Date: Tue, 10 May 2011 05:39:24 -0500\r \r \r \r \r \r \r"

Вы хотите объявить его как iso-8859-1 и преобразовать его в utf-8:

str.force_encoding('iso-8859-1').encode('utf-8')
"\r check!\r \r To: joe@hotmail.com\r Subject: Save almost £2,000 on a luxury Alaskan yacht holiday! \r From: canada@travel.co.uk\r Date: Tue, 10 May 2011 05:39:24 -0500\r \r \r \r \r \r \r"

Вы, вероятно, должны сделать то же самое со вторым письмом.

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