文档指定了如何添加内联附件,但是从 html 部分引用它的正确方法是什么?是否可以像在其他库中一样自动包含图像?
也许有人写了一个小片段并愿意分享?
文档指定了如何添加内联附件,但是从 html 部分引用它的正确方法是什么?是否可以像在其他库中一样自动包含图像?
也许有人写了一个小片段并愿意分享?
这不是一件微不足道的事情,幸运的是,有人将 Zend_Mail ( Demo_Zend_Mail_InlineImages
) 子类化为这样做,请参见此处:
http://davidnussio.wordpress.com/2008/09/21/inline-images-into-html-email-with-zend-framework/
我为邮件类编写包装器
private function _processHtmlBody($I_html, $I_mailer, $I_data) {
$html = $I_html;
$mail = $I_mailer;
$xmlBody = new DomDocument();
$xmlBody->loadHTML($html);
$imgs = $xmlBody->getElementsByTagName('img');
$I_data['atts'] = array();
$imgCount = 0;
foreach ($imgs as $img) {
$imgCount++;
$imgUrlRel = $img->getAttribute('src');
$imgId = sha1(time() . $imgCount . $imgUrlRel);
$html = str_replace($imgUrlRel, 'cid:' . $imgId, $html);
$imgUrlFull = 'http://' . $_SERVER['HTTP_HOST'] . $imgUrlRel;
$imgBinary = file_get_contents($imgUrlFull);
$imgPart = $mail->createAttachment($imgBinary);
$imgPart->filename = 'image' . $imgCount . '.jpg';
$imgPart->id = $imgId;
$I_data['atts'][] = $imgPart;
}
$mail->setBodyHtml($html);
return $html;
}
您可以使用 html 直接将图像嵌入 base64 中,而不是扩展 Zend_Mail。
这是我包含在我的电子邮件模板中的示例图像:
<img src="data:image/jpg;base64,<?= base64_encode(file_get_contents("/local/path/to/image.png")) ?>" />