1

我正在尝试使用 Zend_Mail 类发送一封电子邮件,该类将包含 HTML 格式的文本、纯文本替代和 HTML 中引用的内联图像。我只希望图像显示为嵌入的,而不是作为附件显示。

我当前的代码如下:

$mail = new Zend_Mail('UTF-8');
$mail->addTo($recipient);
$mail->setFrom($sender);
$mail->setSubject($subject);  

$mail->setBodyText($text); 
$mail->setBodyHtml($html);

$images = array('name1','name2','name3');    
foreach ($images as $i){
    $filename = Zend_Registry::get('config')->path->localimages . '/' . $i . '.png';
    $at = new Zend_Mime_Part(file_get_contents($filename));
    $at->filename = $i . '.png';
    $at->type = 'image/png';
    $at->disposition = Zend_Mime::DISPOSITION_INLINE;
    $at->encoding = Zend_Mime::ENCODING_BASE64;
    $at->id = $i;
    $mail->addPart($at);
    }

 $mail->send();

由于同时使用了 setBodyText() 和 setBodyHtml(),Zend 自动生成多部分/替代 MIME 消息。这些图像随后显示为嵌入在 HTML 代码中,但也显示为附件。

我希望图像只显示嵌入。为此,我知道我需要在类型为 multipart/alternative 的 MIME 部分中包含文本和 html,然后将整个电子邮件的类型设置为 multipart/related。我怎样才能在 Zend 1.10 中实现这一点?我知道在 ZF2 中您只需构建一个 MIME 多部分消息,然后对该消息使用 setBody(),但在 Zend 1.10 中,您必须设置 setBodyText() 或 setBodyHtml()。是否可以控制 MIME 多部分消息的创建方式?

4

0 回答 0