我正在尝试使用 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 多部分消息的创建方式?