0

ユーザーが印刷画面の画像を貼り付けるCKEditor3.6.5(リビジョン7647)フィールド(CakePHP 2.2.1サイト上)があります(Firefoxでのみ機能します)。貼り付け(単語からのボタン貼り付け)によって生成されるhtmlは、次のようなものです。

<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">

私は、同じ結果を達成する他のソリューションにもオープンです。

4

1 に答える 1

1

画像タグのsrc属性で、cid値は@を使用していたはずです。

正しいコード行

$email->send('test|<img src="cid:Print-Screen-01">|');
于 2013-01-09T15:42:47.170 に答える