【发布时间】:2013-01-09 12:47:21
【问题描述】:
我有一个 CKEditor 3.6.5(修订版 7647)字段(在 CakePHP 2.2.1 站点上),用户可以在其中粘贴打印屏幕图像(仅适用于 Firefox)。粘贴生成的html(从word粘贴按钮)是这样的:
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO 9TXL0Y4OHwAAAABJRU5ErkJggg==" />
在某个时候,我必须通过电子邮件发送这些字段上的 html,其中应包含图像。
阅读 [base64-encoded-images-in-email-signatures][1] 和 [how-to-embed-images-in-email][2] 我认为电子邮件应该带有图像的附件。
我的问题是如何转换文件中图像的 src?这样我打算在发送之前转换 HTML。
我已成功尝试附加文件:
$data = base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAUA AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO 9TXL0Y4OHwAAAABJRU5ErkJggg==');//file_get_contents('http://' . env('HTTP_HOST') . $fileInfo['url'] . '/disable-auth-key:' . Configure::read('Security.salt') . '.' . $fileInfo['ext']);
$handle = fopen(TMP . 'print_screen.png', 'w+');
fwrite($handle, $data);
fclose($handle);
$email = new CakeEmail(array(
'log' => true,
'config' => 'smtp',
'returnPath' => 'return@mydomain.pt',
'from' => array('app@mydomain.pt' => 'APP'),
'to' => array('name@domain.pt' => 'Name'),
'emailFormat' => 'html',
'subject' => 'image test',
'domain' => '@uab.pt',
'attachments' => array(
'print_screen.png' => array(
'file' => TMP . 'print_screen.png',
'mimetype' => 'image/png',
'contentId' => 'Print-Screen-01'
)
)
));
$email->send('test|<img src="cid:print_screen.png@Print-Screen-01">|');
在 GMail 上我可以访问附件文件,但在正文上没有图像。来源在哪里
<div id=":85x">test|<img>|</div>
在 Outlook 上,没有附件,来源是
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">test|<img src="cid:print_screen.png@Print-Screen-01">
我也对达到相同结果的其他解决方案持开放态度。
【问题讨论】:
-
您可以在webroot中创建图片,并在电子邮件中发布图片的链接
-
@noslone 谢谢:在我的情况下,图像不应该是公开的(我的问题中缺少要求);此解决方案也有效,但在许多邮件客户端中,读者必须授权下载文件(至少第一次)才能看到它们;如果这是一个问题,则具有发送较小电子邮件的优势
标签: php image email cakephp ckeditor