Outlook показывает HTML как текст - PullRequest
1 голос
/ 21 августа 2011

Я отправляю письмо с моего приложения ruby ​​on rails. Все почтовые клиенты хорошо отображают мою электронную почту (gmail, the bat, thunderbird и т. Д.), Но не Outlook: (

В перспективе я вижу это:

my message text

--mimepart_4e514d8786c25_d59..fdab8042069c
Content-Type: multipart/related; charset=f-8
Content-Transfer-Encoding: Quoted-printable
Content-Disposition: inline

--mimepart_4e514d8786c25_d59..fdab8042069c
Content-Type: text/plain; charset=f-8
Content-Transfer-Encoding: Quoted-printable
Content-Disposition: inline

my email text message

--mimepart_4e514d8786c25_d59..fdab8042069c
Content-Type: text/html; charset=f-8
Content-Transfer-Encoding: Quoted-printable
Content-Disposition: inline

my email html code (<h1>test</h1><table...)

--mimepart_4e514d8786c25_d59..fdab8042069c--

Что не так ???

На всякий случай заголовки из outlook:

Message-Id: <4e514d88.100fdf0a.403c.31a7@mx.xxx.ccc>
Subject: =?utf-8?Q?=D0=97=D0=B0=D0=BF=D1=80=D0=BE=D1=81_=D0=B4=D0=BB=D1=8F_=D0=BC=D0=B5=D0=BD=D0=B5=D0=B4=D0=B6=D0=B5=D1=80=D0=B0_=D0=BA=D0=BE=D0=BC=D0=BF=D0=B0=D0=BD=D0=B8=D0=B8_?=
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary=mimepart_4e514d8786c25_d59..fdab8042069c
User-Agent: Rails Application
X-Mailer: Rails Mailer
Return-Path: admin@xxx.ccc
X-Yandex-Forward: 8a20ef6ffc7eeb7ef7c8d000508718e0

То же письмо от gmail, где все хорошо отображаются как в текстовом, так и в html режиме:

Delive
Message-Id: <4e514d88.100fdf0a.403c.31a7@mx.xxx.com>
Subject: xxx
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary=mimepart_4e514d8786c25_d59..fdab8042069c
User-Agent: Rails Application
X-Mailer: Rails Mailer
X-Yandex-Forward: 8a20ef6ffc7eeb7ef7c8d000508718e0


--mimepart_4e514d8786c25_d59..fdab8042069c
Content-Type: multipart/alternative; charset=utf-8
Content-Transfer-Encoding: Quoted-printable
Content-Disposition: inline

email text 


--mimepart_4e514d8786c25_d59..fdab8042069c
Content-Type: multipart/related; charset=utf-8
Content-Transfer-Encoding: Quoted-printable
Content-Disposition: inline


--mimepart_4e514d8786c25_d59..fdab8042069c
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: Quoted-printable
Content-Disposition: inline

email text (plain text)

--mimepart_4e514d8786c25_d59..fdab8042069c
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: Quoted-printable
Content-Disposition: inline


email text(html)

--mimepart_4e514d8786c25_d59..fdab8042069c--

Ответы [ 2 ]

3 голосов
/ 21 августа 2011

Как вы создали эту почту? Вы добавили заголовки вручную?

Я не знаю , где , откуда взято charset = f-8 , но это ошибка, и она отображает всю строку заголовка, содержащую Content-Type: text/html часть недействительна. Тебе просто повезло, что другие почтовые клиенты не хотели быть там очень строгими.

Недопустимая строка заголовка заставляет Outlook интерпретировать часть как обычный текст, что довольно разумно.

Если вы не добавили эти заголовки вручную, а ActionMailer стал дерзким, пожалуйста, опубликуйте код, в котором вы создаете почту. Возможно, стоит написать еще один вопрос.

1 голос
/ 25 января 2012

(1) неправильное составное структурирование в вашем образце; вам нужно добиться такой иерархии (с правильной кодировкой передачи и другими деталями):

Content-Type: multipart/alternative; boundary="LEVEL0"

--LEVEL0
Content-Type: text/plain; ...
email text...

--LEVEL0
Content-Type: multipart/related; boundary="LEVEL1"

--LEVEL1
Content-Type: text/html; ...
<html><body>...

--LEVEL1
Content-Type: image/jpeg; ...
...

--LEVEL1--

--LEVEL0--

(2) Некоторые версии Outlook не отображают HTML-сообщение напрямую, когда Content-Disposition: встроенный заголовок явно установлен для его части «text / html».

...