PEAR Mail_mime не показывает подходящую версию

У меня возникли проблемы с PEAR, когда я использую класс Mail_mime для отправки HTML/текстовой почты со встроенными изображениями.

Мне нужен сценарий, чтобы предоставить электронное письмо как с текстовой, так и с HTML-версией содержимого. Содержание будет несколько другим.

  1. Текстовая версия будет содержать некоторый текст и прикрепленное изображение.
  2. HTML-версия будет иметь макет с некоторыми ссылками и встроенным изображением. Это изображение совпадает с прикрепленным изображением в текстовой версии.

На данный момент у меня есть скрипт, который отправляет текстовую версию и HTML-версию. Текстовая версия на самом деле не та текстовая версия, которую я говорю отправить, а урезанная версия электронного письма в формате HTML.

После некоторого расследования я обнаружил, что версия в виде обычного текста на самом деле отправляется по электронной почте, но почтовые клиенты по какой-то странной причине показывают только версию HTML с разделами. Также кажется, что это метод addHTMLImage(), который ломает его. Без встроенного изображения

Как выглядит мой код на данный момент:

<?php

require 'Mail.php';
require 'Mail/mime.php';

$to = '[email protected]';
$additional_headers = array(
    'Subject' => 'Email subject',
    'From' => '[email protected]'
);

$text_body = <<<TEXT
This is the plain text version.
TEXT;

$html_body = <<<HTML
<p>This is the HTML version</p>
<p><img src="image.jpg" alt="" /></p>
HTML;

$mime = new Mail_mime();
$mime->setTxtBody($text_body);
$mime->setHTMLBody($html_body);
$mime->addHTMLImage(file_get_contents('default.jpg'), 'image/jpeg', 'image.jpg', FALSE);

$body = $mime->get();
$headers = $mime->headers($additional_headers);
$mailer =& Mail::factory('smtp', array(
    'host' => 'my.mailserver.net',
    'port' => 0,
    'auth' => TRUE,
    'username' => 'myusername',
    'password' => 'mypassword'
));
$res = $mailer->send($to, $headers, $body);

if (PEAR::isError($res)) {
    echo 'Couldn\'t send message: '.$res->getMessage();
}

?>

Насколько я знаю, больше ни у кого нет такой проблемы. Что-то не так с моим кодом или с моей установкой PEAR?


person rebellion    schedule 18.10.2010    source источник
comment
У меня та же проблема, хотя я не уверен, что название вашего вопроса точно соответствует тому, что вы спрашиваете. В любом случае, я обнаружил ошибку в модуле Mime_mail. Надеюсь, что-то из этого получится. pear.php.net/bugs/bug.php?id=18567   -  person Michael Irigoyen    schedule 26.05.2011


Ответы (2)


Передайте символ конца строки конструктору класса Mail_mime.

Окна в "\n\r" - или наоборот, не помню

person Chris    schedule 09.11.2010

Сегодня мы столкнулись с той же проблемой и провели обширное исследование. Мы обнаружили, что Mozilla Thunderbird подавляет строки ABNF, которые не соответствуют шаблону капитализации Content-Type. Во всех других почтовых клиентах, которые мы тестировали, текстовая альтернатива работала, как и ожидалось.

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

person Michael Irigoyen    schedule 26.05.2011