当我使用 Mail_mime 类发送带有嵌入图像的 HTML/文本邮件时,我在使用 PEAR 时遇到了一些问题。
我需要脚本做的是提供包含文本和 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 安装有问题吗?