2010-10-18 3 views
0

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

Мне нужен сценарий, чтобы предоставить электронное письмо как с текстовой, так и с 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?

+0

У меня такая же проблема, хотя я не уверен, что название вашего вопроса точно соответствует тому, что вы просите. В любом случае, я открыл ошибку для модуля Mime_mail. Надеюсь, что-то из этого выйдет. http://pear.php.net/bugs/bug.php?id=18567 –

ответ

0

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

Окна в «\ п \ г» - или наоборот, не помню

0

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

Итак, вы, вероятно, проблема, скорее всего, ваш клиент. Надеюсь, это поможет вам в правильном направлении.