Outlook 2003 неверно отображает кодировку MIME-сообщений, полученных в ответ от Apple iPad
Версия для печати

Конференция: Конференция iXBT.com (http://forum.ixbt.com/)
Форум: Программы: Интернет (http://forum.ixbt.com/?id=24)
URL: http://forum.ixbt.com/topic.cgi?id=24:45169



vinni, 28.10.2010 00:17
Имею Outlook 2003 SP3, в качестве редактора указан Word, формат сообщений HTML, кодировка utf-8 (проверялась и win-1251)

Мои действия:

1. Пишу письмо с содержимым "Проверка"

В архиве своего почтового сервера вижу как оно сформировалось - 2 секции MIME, обе charset=windows-1251
код:
--705722446-5705-1288204810-0
Content-Type: text/plain; charset=windows-1251
Content-Transfer-Encoding: quoted-printable

=CF=F0=EE=E2=E5=F0=EA=E0 win-1251
--705722446-5705-1288204810-0
Content-Type: text/html; charset=windows-1251
Content-Transfer-Encoding: quoted-printable

<html>...skipped...</html>
--705722446-5705-1288204810-0--



2. Получаю его на iPad, и отвечаю на него.
В архиве своего почтового сервера вижу как оно сформировалось iPad'ом - сформировалось по-дурацки, но может и не противоречит стандарту, не готов утверждать - 2 секции MIME, но разной кодировки - текстовая в кодировке koi-8r, а html-евская в кодировке utf-8!!!!!!
код:
--Apple-Mail-1-661012121
Content-Type: text/plain;
charset=koi8-r
Content-Transfer-Encoding: quoted-printable

=EF=D4=D7=C5=D4
=EF=D4=D0=D2=C1=D7=CC=C5=CE=CF =D3 iPad
27.10.2010, =D7 22:40, admin@ =CE=C1=D0=C9=D3=C1=CC(=C1):
> =F0=D2=CF=D7=C5=D2=CB=C1 win-1251

--Apple-Mail-1-661012121
Content-Type: text/html;
charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html>...skipped...</html>

--Apple-Mail-1-661012121--


При этом в Outlook'е отображается криво-кодовая-билиберда:
код:
п·я-п¦п¦я-
п·я-п©я-п¦п¦п¦п¦п+п+ я¦ iPad
27.10.2010, п¦ 22:40, admin@ п+п¦п©пTя¦п¦п¦(п¦):
п?я-п+п¦п¦я-п¦п¦ win-1251


Исправляется билиберда выбором кодировки UTF-8 при просмотре в Outlook'е.
Но уже сил нет и исправлять самому и объяснять это по 10 раз в день.


3. Дальнейшие эксперименты пока убедили меня в том, что это именно Outlook неверно берёт данные о кодировке, а именно он берёт данные о кодировке из секции text/plain, а отображает секцию text/html.

Коротко о проведенных тестах (чтобы было ясно, что это не одно письмо, у меня их в тестовом ящике уже штук 30):
- ставил в Outlook'е кодировку UTF-8 (думал панацея именно в этом), письмо из Оутлука уходит двумя секциями UTF-8, но iPad (как будто специально!) в ответ шлёт письмо двумя секциями, но теперь уже text/plain charset=windows-1251, а отображает секцию text/html charset=utf-8. Такое впечатление, что в Apple специально нашли этот баг Оутлука и специально наступают на него. Оутлук опять отображает неверно - он берёт кодировку windows-1251, но отображает секцию html utf-8. Можно конечно спросить Apple зачем она так передёргивает кодировки, но, пардон, ведь кодировки в секциях указаны? Указаны! Будьте добры, отобразите!

- если в "сыром" письме (в файле) на IMAP-сервере исправить письмо (я просто брал и делал 3 дополнительные копии), а именно:
-- или удалить секцию text/plain
-- или удалить секцию text/html
-- или в секции text/plain исправить поле charset=*** на charset=utf-8,
то каждое из этих исправленных писем отображается корректно!!!
Понятно, что одно их них отображается только текстом (т.к. html-секция отрезана), а в последнем секция text имеет неверную кодировку, но письмо ведь отображается верно, т.к. содержимое секции text не используется.
Кстати, точно такие же ошибки отображения показывает и Outlook Express 6.

А вот перестановка секции html на первое место результата в Outlook 2003 не дала, а Outlook Express 6 на это среагировал и отобразил правильно.

4. Такие же жалобы идут и от пользователей Outlook 2007, но я пока не смотрел в деталях. Outlook 2010 - скачал пробную версию, но не смотрел.

Какие мысли/советы?
Уж больно неохота править тэги на сервере, т.к. это за собой наверняка потянет косяки.

P.S. Это я ещё не рассказал историю про отображение писем с text/html и вложенными файлами с кириллическими названиями, созданными в Aplle Mail.App - это тоже ещё та песТня :-( Коротко скажу так - 3 проверенных браузера (Outlook 2003, Outlook 2007 и Outlook Express 6) отображают их 3-мя разными способами в порядке уменьшения глюков (то есть "старый" Outlook Express 6 отображает правильно, а оба Оутлука - нет)

Копия сообщения здесь: http://social.answers.microsoft.com/Forums/ru-RU/off…9166-011a0e1ad822

1. Sergick-36, 29.10.2010 02:33
vinni
Какие мысли/советы?

написать в поддержку Микрософт, у них вроде Офис не бесплатный, пусть шевелятся бракоделы

2. Биомеханик, 29.10.2010 09:30
Sergick-36
написать в поддержку Микрософт, у них вроде Офис не бесплатный, пусть шевелятся бракоделы

То есть если Apple косячит - исправлять за них должна MS? Интересная идея.

3. vinni, 29.10.2010 12:21
Биомеханик
То есть если Apple косячит - исправлять за них должна MS? Интересная идея.
А почему Вы решили, что косячит Apple?
Лично я сделал иной вывод и данные привёл.

Именно Outlook берёт значение параметра charset из несоответствующей секции.
Я слабо верю, что в так написано в стандарте MIME или там предписано не использовать разные charset'ы.
Скажу честно, стандарт не смотрел.

Добавление от 29.10.2010 12:25:

Sergick-36
написать в поддержку Микрософт
В данном случае это не моя епархия. Да и честно, я крайне невысокого мнения о поддержке, по крайней мере в тех случаях, что приходилось иметь дело. Может быть продвинутые программы поддержки и лучше, но их у меня нет.

Добавление от 29.10.2010 12:26:

Биомеханик
Я не фанат ни Apple ни MS. Так, на всякий случай говорю, чтобы не записывали заочно в чей-то лагерь.

4. vinni, 13.11.2010 13:28
Биомеханик
То есть если Apple косячит - исправлять за них должна MS? Интересная идея.
Заметим, Office 2010 эти сообщения от того же самого iPad'а читает...
Так что я по-прежнему считаю, что это баг именно офиса-2003-2007

5. Биомеханик, 13.11.2010 14:18
vinni
Так что я по-прежнему считаю, что это баг именно офиса-2003-2007

Прекрасно. Только его - баг - исправлять уже никто не станет. :)

6. vinni, 13.11.2010 14:50
Биомеханик
Это я к Вашей фразе если Apple косячит.
На текущий момент Интересная идея вроде как выглядит банально и грустно:

То есть если Apple MS косячит - исправлять за них должна MS?
Прекрасно. Только его - баг - исправлять уже никто не станет

Хотя поддержка MS что-то говорила (ну после того, как я девочке третий раз объяснил, что её лапша на моих ушах не держится) что "напишите нам на e-mail".

7. Биомеханик, 13.11.2010 15:31
vinni
Хотя поддержка MS что-то говорила (ну после того, как я девочке третий раз объяснил, что её лапша на моих ушах не держится) что "напишите нам на e-mail".

Напишите.
Только учтите, что уже вышел MS Office 2010. Так что заниматься исправлениями в предыдущих версиях пакета скорее всего никто не станет.

8. vinni, 13.11.2010 15:39
Биомеханик
Только учтите, что уже вышел MS Office 2010
Yes, Cap :gigi: См.выше.
Я его уже опробовал, глюкодром ещё тот - за 10 минут 4 раза повис при синхронизации IMAP-папок :(

9. Биомеханик, 13.11.2010 15:45
vinni
Yes, Cap См.выше.

Так вот, для любителей Луркмора - версия 2010 была указана как причина, по которой исправления в предыдущие версии офисного пакета вноситься скорее всего не будут.

10. QuickeneR2, 23.11.2010 09:49
Вышла iOS 4.2. Кто-нибудь пробовал, не поправили там кодировку?

11. Gagana, 23.11.2010 12:25
"поправили"? Разве что, сделали такую настройку. Вот чего не хватает в iPad, так это возможности установить кодовую страницу "по умолчанию" для писем.

12. QuickeneR2, 28.12.2010 14:57
Пришлось побороть на почтовом серваке (линуксовом). Понадобились procmail для детекции писем с айпадов и перл для собственно перекодировки. Конфиг procmail
код:
:0:
* ^X-Mailer: iPad Mail.*
* !^X-Loop: ipad-encoding@mydomain\.ru
{
:0 c
{
:0 fw
| /usr/bin/formail -A "X-Loop: ipad-encoding@mydomain.ru"

:0
!ipad-encoding@mydomain.ru
}

:0 fw
| /full/path/to/force-utf8.pl
}

Перевод: письма, отправленные программой с названием iPad Mail будем а) собственно перекодировать б) копии до перекодировки сохранять в отдельном ящике. Чтобы предотвратить многократную обработку, добавляем особый заголовок. В предпоследней строчке надо указать полный путь к файлу скрипта перекодировки (ниже).
Для перла понадобятся пакеты из CPAN, они перечислены в комментарии ниже. Их можно установить как положено - perl makefile.pl; dmake; dmake test; dmake install - либо скопировать в текущий каталог, например для Email::MIME::Content-Type кидаем Content-Type.pm в ./Email/Mime/ . Ремарка: поскольку скрипт будет запускаться не из своего каталога, надо либо все-таки установить пакеты, либо кинуть файлы в perl include path.
код:
#!/usr/bin/perl
# will convert all text/* parts of a multipart message to utf-8 charset, keeping the transfer encoding
# message on stdin -> message on stdout, no other output, to work as mail filter
# download these packages from CPAN: Email::Simple, Email::MIME, Email::MIME::Content-Type,
# Email::MIME::Encodings, Email::MessageID, Email::Date::Format, Email::Address
use Email::MIME;
use Email::MIME::ContentType;
use Encode 'from_to';
{
local $/=undef;
$message = <STDIN>;
}
my $email = Email::MIME->new($message);

my $mct = parse_content_type($email->content_type);
my $mtype = $mct->{'discrete'} or '';

if (lc($mtype) eq 'multipart') {
my @parts = $email->parts;
foreach my $part (@parts) {
my $ct = parse_content_type($part->content_type);
my $type = $ct->{'discrete'} or '';
my $attr = $ct->{'attributes'} or {};
my $charset = $attr->{'charset'} or '';
if (lc($type) eq 'text' && lc($charset) ne 'utf-8') {
my $body = $part->body;
from_to($body, $charset, 'utf-8') or die 'conversion failed';
$part->charset_set('utf-8');
$part->body_set($body);
}
}
$email->parts_set(\@parts);
$email->header_set('X-Loop' => 'ipad-encoding@mydomain.ru');
}
print $email->as_string;

13. alx_on, 24.03.2011 00:58
QuickeneR2
С тем же мучаюсь
Ваше решение все еще работает или нашли другой путь?

Зы:спасибо за наводку

14. Sergick-36, 24.03.2011 05:16
я вместо ОТВЕТА просто копирую часть входящего сообщения и вставляю его в НОВОЕ письмо. Тогда не глючит у получающих.

На айфоне правда, но это одинаково.

15. QuickeneR2, 30.03.2011 13:36
alx_on
Живем с перекодировщиком. Другой путь - это если Apple или MS исправят свои ошибки, на что надежды мало. Кстати, конфиг пришлось немного усовершенствовать, начало выглядит так
код:
:0:
* ^X-Mailer: iPad Mail.*|\
^Mime-Version: .*iPad Mail.*
* !^X-Loop: ipad-encoding@mydomain\.ru
* !^To: .*ipad-encoding@mydomain\.ru
{

16. SergeSF, 09.04.2011 18:33
Мало того, что этот баг Microsoft не будет исправлять по причине выхода 2010 офиса, так ещё и российский рынок вряд ли для обеих компаний является приоритетным, а проблема специфична для кириллицы. Так чтаа...

17. alx_on, 12.04.2011 12:35
QuickeneR2
Поправили скрипт
В случае блока с текстом и _отсутствии_ charset'а лажается (нашли на "text/x-vcard")

строку
if (lc($type) eq 'text' && lc($charset) ne 'utf-8') {
заменить на
if (lc($type) eq 'text' && ($charset) && lc($charset) ne 'utf-8') {

18. QuickeneR2, 15.04.2011 11:21
alx_on
Не подумал о таком случае. Спасибо.

19. Alex Pr, 15.04.2011 12:14
SergeSF
Мало того, что этот баг Microsoft не будет исправлять по причине выхода 2010 офиса, так ещё и российский рынок вряд ли для обеих компаний является приоритетным, а проблема специфична для кириллицы.
Будет или не будет исправлять – ответ на этот вопрос будет только тогда, когда кто-то обратится в премьер поддержку (за $200) и получит какой-нибудь ответ .

20. Игорь Лейко, 15.04.2011 13:18
Alex Pr
ответ на этот вопрос будет только тогда, когда кто-то обратится в премьер поддержку (за $200) и получит какой-нибудь ответ
vinni и другие заинтересованные лица, могу предоставить код для бесплатного обращения в эту поддержку.
P.S. Емнип, если признают своей ошибкой, код будет считаться неиспользованным. Действителен, емнип, полгода.

21. zgen, 15.04.2011 13:43
Игорь Лейко
Вы лучше расскажите нам, почему для этого нужна именно некая премьер поддержка, неужели наличия коробочной лицензии на офис для такой поддержки недостаточно?

22. Игорь Лейко, 15.04.2011 13:49
zgen
Для получения премьер поддержки коробочной лицензии действительно недостаточно.

23. zgen, 15.04.2011 15:50
Игорь Лейко
Для получения премьер поддержки коробочной лицензии действительно недостаточно.
Это понятно. Непонятно другое - чтобы сообщить об ошибке и спросить рекомендации нужна именно премьер поддержка, наличия обычной коробочной лицензии недостаточно?

24. Биомеханик, 15.04.2011 15:57
zgen
Это понятно. Непонятно другое

Непонятно одно - почему бы сразу не спросить правильно, а? Почему надо ходить вокруг да около?

25. Игорь Лейко, 15.04.2011 15:59
zgen
Непонятно другое - чтобы сообщить об ошибке и спросить рекомендации нужна именно премьер поддержка, наличия обычной коробочной лицензии недостаточно?
Наличия - совершенно не достаточно, нужно еще иметь желание позвонить. Но практика (в виде статистики обращений в поддержку), к сожалению, показывает, что русская версия - одна из самых беспроблемных в мире.
И если Вы заметили, то про обращение в премьер поддержку заговорил не я, а Alex Pr, причем доля истины в его утверждении есть - такие обращения оказываются куда более весомыми.

26. vinni, 16.04.2011 01:17
Игорь Лейко
vinni и другие заинтересованные лица, могу предоставить код для бесплатного обращения в эту поддержку.
P.S. Емнип, если признают своей ошибкой, код будет считаться неиспользованным. Действителен, емнип, полгода.


В принципе, интересно. Готов понять и постараться попробовать.
Хоть посмотрим что за "премьер", а то обычная поддержка - пустая трата своего времени.
Только для начала, если можно, понять бы что это за код и что к нему нужно в довесок. А то у меня под рукой ни одной коробки 2003 офиса нет, только ОЕМы.

Добавление от 16.04.2011 01:20:

P.S. Виснет коробочный офис 2010 на Висте, обратился в поддержку. Толку - ноль. "Саппорт Билайн от имени и по поручению" любезно посоветовал мне взять в руки procmon, правда не утруждая себя пониманием того, как я буду мониторить работающую машину в течение 1-2-7 дней... На том поддержка пока и встала

27. Игорь Лейко, 16.04.2011 01:25
vinni
и что к нему нужно в довесок
Если имеете в виду, что нужно иметь зарегистрированный экземпляр ПО, как в обычной поддержке, то не нужно.
В понедельник в приват поглядывайте. Или предпочитаете эл, почту?

Толку - ноль.
Ну так что они могут сказать, если нет подробностей? Но это уже отдельная тема. Хотя поотключать надстройки вполне могли порекомендовать.

28. vinni, 16.04.2011 01:31
Игорь Лейко
В понедельник в приват поглядывайте. Или предпочитаете эл, почту?
Устроит и то и то. Но диалог удобнее в привате.

Хотя поотключать надстройки вполне могли порекомендовать.
Могли. Но пока не порекомендовали

29. zgen, 16.04.2011 05:15
Биомеханик
Почему надо ходить вокруг да около?
Так получилось.

30. vinni, 30.04.2011 13:11
Игорь Лейко
ответ на этот вопрос будет только тогда, когда кто-то обратится в премьер поддержку (за $200) и получит какой-нибудь ответ
vinni и другие заинтересованные лица, могу предоставить код для бесплатного обращения в эту поддержку.
P.S. Емнип, если признают своей ошибкой, код будет считаться неиспользованным. Действителен, емнип, полгода.


Спасибо Игорю за код. Обратился в тех.поддержку. Ответ таков: "Да, разработчики ошибку знают. Однако нет никаких данных о том будет ли вообще выпущено исправление для Офиса 2003 и тем более когда оно будет выпущено.
А вот по аналогичной ошибке Офиса 2007 данные есть - ошибка планируется быть исправленной в SP3"
За это сообщение сказали спасибо: Alex Pr

31. Alex Pr, 30.04.2011 20:45
vinni
А вот по аналогичной ошибке Офиса 2007 данные есть - ошибка планируется быть исправленной в SP3
Ну надо же! А я уже смирился с идеей, что после анонса и выхода Office 2010 предыдущая версия будет потихоньку забыта и очередного пакета обновления точно не будет.

32. ivstark, 11.11.2011 15:51
цитата:
Биомеханик
Заметим, Office 2010 эти сообщения от того же самого iPad'а читает...

Возможно жуткий некропост, но:
У меня в 2010 офисе письма с ipad все равно в неверной кодировке.
При смене на utf-8 отображается корректно.
Может у Вас версия офиса другая?

Эх, если бы можно было задать кодировку по-умолчанию входящих писем в аутлуке или исходящих в айпаде.

33. Биомеханик, 11.11.2011 16:12
ivstark
Может у Вас версия офиса другая?

К кому обращён вопрос? Если ко мне - то у меня ни iPad, ни 2010-го Офиса нет

34. vinni, 11.11.2011 16:15
ivstark
Эх, если бы можно было задать кодировку по-умолчанию входящих писем в аутлуке
То есть Вы искрнне надеетесь, что это место кода будет написано без ошибок и работать как написано?


исходящих в айпаде.
Не, там специально с кодировками извращались, похоже что специально в пику MS.


Кстати, SP3 для Office 2007 вышел же? Никто не проверил, исправили глюк?

35. Биомеханик, 11.11.2011 16:22



URL: http://forum.ixbt.com/topic.cgi?id=24:45169