Отправленный Email в MAC'e открывается закорючками

Тема в разделе "PHP", создана пользователем dandandan, 30 апр 2012.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Есть скрипт для отправки текста пользователям. Недавно столкнулся с проблемой, что стандартная МАКовская прога mail открывает письма в виде закорючек. Во всех остальных клиентах данные открываются нормально, в почтовиках - тоже нормально.

    Теперь подробнее. Есть скрипт, который высылает данные пользователю. Везде в письмах и на сайте используется кодировка УТФ-8. Используется text/html при отправке. Пробовал данные слать через smtp и через функцию mail() . Результат один и тот же.
    Некоторые письма с разным текстом на маке открываются нормально, некоторые крякозяблами. Если письмо открылось крякзяблами, то при повторной отсылке - письмо так же открывается крякозябами. При этом это же письмо, если открыть через веб интерфес почтовика или любой другой программы - отображается нормально.
    Программа на маке по умолчанию указывает кодировку УТФ-8 для открываемого письма.
    Определить кодировку полученного письма с помощью программы штирлиц не удалось.

    Тема письма приходит на МАК нормальная, тело письма - закорючки.

    Пример кусочка текста из полученного письма:
    Должно быть:
    Для отправки использую вот эту библиотечку: http://webi.ru/webi_files/php_libmail.html со слегка изменённым интерфейсом отправки данных. Сам код форматирования полей создаваемых данных не менял (subject, body и т.д). При использовании оригинальной либы с сайта- проблемы те же.

    Есть какие-либо идеи как победить данный глюк?
     
  2. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    открой саму либу, и в функции Send, посмотри значение переменных $this->headers и $this->fullBody в конце функции, и скопируй сюда
     
  3. Conwell

    Conwell

    Регистр.:
    23 мар 2009
    Сообщения:
    337
    Симпатии:
    177
    Уважаемые, ни библиотека, ни юникод тут не причем - проблема в самом приложении mail.app которая очень капризна и не всегда правильно определяет кодировку в которой ей было прислано письмо. Усугубляется тем, что в приложении толком не задать как реагировать на определенные письма. Еще один минус для Apple.
     
  4. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
     
  5. Easy.proger

    Easy.proger Создатель

    Регистр.:
    1 май 2012
    Сообщения:
    22
    Симпатии:
    1
    что то сомневаюсь я в вышеизложенном ! так как сам активно пользуюсь mail.app уже более 2х лет и письма с моих серверов всегда приходят в верной кодировке !!!
     
  6. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    попробуй поигратся с Content-Transfer-Encoding, изменить значение с 8bit на base64 и перед отправкой соответственно конвертировать тело письма в base64
     
  7. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Наконец-то дошли руки до тестов. Занимался внедрением мультиязычности в скрипт.
    Попробовал Ваш совет, не помогло. Взял скрипт phpmailer, ситуация та же.

    Единственно, что помогло - перекодировка всего в koi8-r (тело письма, тема, имена пользователей). (Возможно перекодирование в вин-1251 тоже будет норм работать, но смысла не вижу тестить.) Не совсем нравится технология, т.к. писем будет много. А iconv все же дает нагрузку на сервер. А сервис расчитан на utf-8.

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

    Провел еще 1 эксперимент: через мейл.ру письмо пришло в нормальной кодировке (утф-8) без крякозябл. Через гугл не удалось отправить - заблочил email с текстом, что вроде как тебя взломали и пытаются отправить письмо.

    p.s. Нахожусь в полном тупике. Приветствуются любые идеи.
     
  8. perumn

    perumn Постоялец

    Регистр.:
    27 апр 2012
    Сообщения:
    55
    Симпатии:
    4
    Кодировку с помощью программы Notepadd ++ поменяй
     
  9. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Проблема не в кодировке. Проблема в программе была. Многие почтовые клиенты не умеют показывать длинные тексты. Тексты надо разбивать на примерно 80 символов в строке. После установки таких пределов все крякозяблы исчезли.

    Проблема решена. Тему можно закрывать.
     
Статус темы:
Закрыта.