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

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

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

    dandandan

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

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

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

    Пример кусочка текста из полученного письма:
    Должно быть:
    Для отправки использую вот эту библиотечку: Перейти по ссылке со слегка изменённым интерфейсом отправки данных. Сам код форматирования полей создаваемых данных не менял (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
    Сообщения:
    989
    Симпатии:
    267

    Нормальное сообщение:
    Delivered-To: guy@gmail.com
    Received: by 10.231.108.200 with SMTP id g8csp101291ibp;
    Mon, 30 Apr 2012 03:14:48 -0700 (PDT)
    Received: by 10.216.142.103 with SMTP id h81mr4834015wej.62.1335780887439;
    Mon, 30 Apr 2012 03:14:47 -0700 (PDT)
    Return-Path: <webmaster@vb.com>
    Received: from control.vkomissarov.ru ([178.162.191.158])
    by mx.google.com with ESMTPS id o6si17182494wee.144.2012.04.30.03.14.46
    (version=TLSv1/SSLv3 cipher=OTHER);
    Mon, 30 Apr 2012 03:14:47 -0700 (PDT)
    Received-SPF: softfail (google.com: domain of transitioning webmaster@vb.com does not designate 178.195.11.15 as permitted sender) client-ip=178.195.11.15;
    Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning webmaster@vb.com does not designate 178.162.191.158 as permitted sender) smtp.mail=webmaster@vb.com; dkim=neutral (bad version) header.i=@vb.com
    DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=viralmarketingbomb.com; s=mail;
    h=Date:Message-Id:Content-Transfer-Encoding:Content-Type:Mime-Version:Reply-To:From:Subject:To; bh=KkgLny+18gQoTuj5nR55kwpeY3j4vKPwtqTIDksvoAc=;
    b=XU8B/zWpjQfKcOljF5CQO8LgO7zzBgmbDUNs9VQ1GFWGdVmb7noOJvzC7qHJLxWkstninevUEe6QUX8/cN3e4Cy0tfsCKNvFKmOHmOZ4CKM6+ZoCUrGVSzLklo93AZtXZmhbSAnmaTT+s39l4iJOezk8+q14g2nMFZfLXeoa6+I=;
    Received: from www-data by cl.vkov.ru with local (Exim 4.76)
    (envelope-from <webmaster@vb.com>)
    id 1SOnd0-0007o7-1f
    for guy@gmail.com; Mon, 30 Apr 2012 14:14:46 +0400
    To: guy@gmail.com
    Subject: =?utf-8?Q?=D0=A1=D1=81=D1=8B=D0=BB=D0=BA=D0=B0_=D0=B4=D0=BB=D1=8F_=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F_=D0=BF=D1=80=D0=B5=D0=B4=D0=B2=D0=B0=D1=80=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D1=85_=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B9?=
    X-PHP-Originating-Script: 1032:smtp_class.php
    From: =?utf-8?Q?=D0=91=D1=8B=D1=81=D1=82=D1=80=D1=8B=D0=B5_=D0=B4=D0=B5=D0=BD=D1=8C=D0=B3=D0=B8?= <robot@vb.com>
    Reply-To: =?utf-8?Q?=D0=91=D1=8B=D1=81=D1=82=D1=80=D1=8B=D0=B5_=D0=B4=D0=B5=D0=BD=D1=8C=D0=B3=D0=B8?= <robot@vb.com>
    X-Priority: 3 (Normal)
    Mime-Version: 1.0
    Content-Type: text/html; charset=utf-8
    Content-Transfer-Encoding: 8bit
    X-Mailer: vb(vb.com)
    Message-Id: <E1SOnd0-0007o7-1f@cl.vkov.ru>
    Date: Mon, 30 Apr 2012 14:14:46 +0400

    <html><head><title>Сообщение</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>Здравствуйте, антон.<br /> Кто-то на странице...
    </body>


    Кривое сообщение:
    Delivered-To: guy@gmail.com
    Received: by 10.231.108.200 with SMTP id g8csp103520ibp;
    Mon, 30 Apr 2012 04:01:45 -0700 (PDT)
    Received: by 10.152.110.170 with SMTP id ib10mr21309154lab.7.1335783704579;
    Mon, 30 Apr 2012 04:01:44 -0700 (PDT)
    Return-Path: <robot@vb.com>
    Received: from forward17.mail.yandex.net (forward17.mail.yandex.net. [95.108.253.142])
    by mx.google.com with ESMTP id g4si9441446lab.57.2012.04.30.04.01.43;
    Mon, 30 Apr 2012 04:01:44 -0700 (PDT)
    Received-SPF: pass (google.com: domain of robot@vb.com designates 95.108.253.142 as permitted sender) client-ip=95.108.253.142;
    Authentication-Results: mx.google.com; spf=pass (google.com: domain of robot@vb.com designates 195.128.253.142 as permitted sender) smtp.mail=robot@vb.com
    Received: from smtp16.mail.yandex.net (smtp16.mail.yandex.net [295.128.252.16])
    by forward17.mail.yandex.net (Yandex) with ESMTP id 8DB8C1060C7D
    for <guy@gmail.com>; Mon, 30 Apr 2012 15:01:43 +0400 (MSK)
    Received: from smtp16.mail.yandex.net (localhost [127.0.0.1])
    by smtp16.mail.yandex.net (Yandex) with ESMTP id 7A2176A04A8
    for <guy@gmail.com>; Mon, 30 Apr 2012 15:01:43 +0400 (MSK)
    Received: from cl.vkov.ru (cl.vkov.ru [178.162.191.158])
    by smtp16.mail.yandex.net (nwsmtp/Yandex) with ESMTP id 1U2qakT6-1V2qIbOo;
    Mon, 30 Apr 2012 15:01:31 +0400
    Date: Mon, 30 Apr 2012 15:01:30 +0700
    Message-ID: <1109758694.20120430150130@vb.com>
    From: =?utf-8?Q?=D0=91=D1=8B=D1=81=D1=82=D1=80=D1=8B=D0=B5_=D0=B4=D0=B5=D0=BD=D1=8C=D0=B3=D0=B8?= <robot@vb.com>
    Reply-To: =?utf-8?Q?=D0=91=D1=8B=D1=81=D1=82=D1=80=D1=8B=D0=B5_=D0=B4=D0=B5=D0=BD=D1=8C=D0=B3=D0=B8?= <robot@vb.com>
    Subject: =?utf-8?Q?=D0=A1=D1=81=D1=8B=D0=BB=D0=BA=D0=B0_=D0=B4=D0=BB=D1=8F_=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F_=D0=BF=D1=80=D0=B5=D0=B4=D0=B2=D0=B0=D1=80=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D1=85_=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B9?=
    X-Priority: 3 (Normal)
    To: =?utf-8?Q?=D0=B0=D0=BD=D1=82=D0=BE=D0=BD?= <guy@gmail.com>
    Mime-Version: 1.0
    Content-Type: text/html; charset=utf-8
    Content-Transfer-Encoding: 8bit
    X-Mailer: vb(vb.com)

    <html><head><title>–°–Њ–Њ–±—Й–µ–љ–Є–µ</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>–Ч–і—А–∞–≤—Б—В–≤—Г–є—В–µ, –∞–љ—В–Њ–љ.<br />... </body>


    Для echo $this->fullbody на локальном компе
    <html><head><title>Сообщение</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>Здравствуйте, asdf.<br />...</body>


    Для echo $this->headers на локальном компе
    From: =?utf-8?Q?vb?= <robot@vb.com> Reply-To: =?utf-8?Q?vb?= <robot@vb.com> X-Priority: 3 (Normal) Mime-Version: 1.0 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit X-Mailer: vb(vb.com)



     
  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
    Сообщения:
    989
    Симпатии:
    267
    Наконец-то дошли руки до тестов. Занимался внедрением мультиязычности в скрипт.
    Попробовал Ваш совет, не помогло. Взял скрипт 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
    Сообщения:
    989
    Симпатии:
    267
    Проблема не в кодировке. Проблема в программе была. Многие почтовые клиенты не умеют показывать длинные тексты. Тексты надо разбивать на примерно 80 символов в строке. После установки таких пределов все крякозяблы исчезли.

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