MIME "multipart / related" Структура и Apple Mail. Это ошибка? - PullRequest
3 голосов
/ 14 октября 2011

Я создаю электронную почту с помощью PHP Zend Framework Class Zend_Mail .Существует одна текстовая и одна html-часть со связанными встроенными изображениями.Я тоже хочу прикрепить один pdf-файл.

Мой вопрос касается mime-структуры.Возможны две опции:

опция 1:

Content-Type: multipart/mixed
  Content-Type: multipart/alternative 
    Content-Type: text/plain; charset=UTF-8      
    Content-Type: multipart/related 
      Content-Type: text/html; charset=UTF-8 
      Content-Type: image/jpeg
      Content-Type: image/jpeg
      Content-Type: image/png
  Content-Type: application/pdf 

опция 2:

Content-Type: multipart/related;
  Content-Type: multipart/alternative;
    Content-Type: text/plain; charset=utf-8
    Content-Type: text/html; charset=utf-8
  Content-Type: image/jpeg
  Content-Type: image/jpeg
  Content-Type: image/png
  Content-Type: application/pdf

опция 2 построена Zend_Mail, но PDF не распознается AppleПочтовое приложение.Это нормально в Thunderbird 3 и Outlook 2007. Только в Apple Mail PDF-вложение не распознается.

вариант 1 в Apple Mail, Thunderbord и Outlook работает нормально.Но было бы немного сложно извлечь эту структуру из Zend Framework Class Zend_Mail .

Это ошибка в Apple Mail или вариант 2 ненормативный?

С уважением, sn

Ответы [ 2 ]

0 голосов
/ 26 октября 2011

Оба варианта являются нарушениями RFC822, строки заголовка ДОЛЖНЫ начинаться с первого символа их строки;это важно, потому что сворачивание слушателя инициируется тем, что первым символом является пробел SP (# 32) или HT (# 09), IIRC.

Пример:

Content-Type: text/html; charset=UTF-8 

и

Content-Type: text/html;
  charset=UTF-8

в точности эквивалентны.

Правильный способ сделать то, что вы (очевидно) пытаетесь, с помощью атрибута border, выглядит примерно так:

Content-Type: multipart/mixed; boundary="1610edf3f7626f0847a5e75c55287644"
OTHER-HEADERS
--1610edf3f7626f0847a5e75c55287644
Content-Type: multipart/mixed; boundary="embedded_boundary"
OTHER-HEADERS
--embedded_boundary
NESTED-MESSAGE-GOES-HERE
--embedded_boundary--
--1610edf3f7626f0847a5e75c55287644--

Oneчастей вложенной части будет содержать PDF-вложение.

Ссылка: http://www.faqs.org/rfcs/rfc2822.html и ссылки, приведенные здесь: Чувствительны ли к регистру заголовки писем?

0 голосов
/ 14 октября 2011

Вы пробовали указывать тип?см. эту страницу http://framework.zend.com/manual/en/zend.mail.attachments.html

я использую это

    $obj_MailAttachment = new Zend_Mime_Part($allegato);
    $obj_MailAttachment->type = 'application/pdf';
    $obj_MailAttachment->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
    $obj_MailAttachment->encoding = Zend_Mime::ENCODING_BASE64;
    $obj_MailAttachment->filename = 'ordine'.$ordine['numero'].'.pdf';

...

$mail->addAttachment($obj_MailAttachment);
...