У меня есть некоторые проблемы с PEAR, когда я использую класс Mail_mime для отправки HTML / текстовой почты со встроенными изображениями.
Мне нужен скрипт, чтобы предоставить электронное письмо с текстоми HTML-версия контента.Содержимое будет несколько другим.
- Текстовая версия будет содержать текст и вложение изображения.
- HTML-версия будет иметь макет с некоторыми ссылками и встроенным изображением.Это изображение совпадает с прикрепленным изображением в текстовой версии.
Пока что у меня есть скрипт, который отправляет текстовую версию и версию HTML.Текстовая версия на самом деле не текстовая версия, которую я советую отправить, а урезанная версия электронного письма в формате HTML.
После некоторого расследования я обнаружил, что текстовая версия действительно отправляетсяв письме, но почтовые клиенты показывают странную HTML-версию только по какой-то странной причине.Также кажется, что это метод addHTMLImage()
, который нарушает его.Без встроенного изображения
Как выглядит мой код на данный момент:
<?php
require 'Mail.php';
require 'Mail/mime.php';
$to = 'your@email.com';
$additional_headers = array(
'Subject' => 'Email subject',
'From' => 'my@domain.com'
);
$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?