如何使用PHP在邮件正文上发送base64图像?

Car*_*lar 2 php email base64 image

我正在尝试使用下面的代码使用PHP在body64上发送带有base64图像的电子邮件,但图像永远不会出现...如果我更改为URL它可以工作,但它不适用于base64 ..我在一个新的页面上测试了base64只用了<img src=base64>并且也工作了......我错过了什么?

<?php
    // recipients
    $to  = $_POST['email'];

    // subject
    $subject = 'Test';

    // message
    $message = '
        <html>
        <head>
         <title>Test</title>
        </head>
        <body>

            <img src="'.$_POST['imageFromOtherPage'].'"/>

        </body>
        </html>
        ';

    // To send HTML mail, the Content-type header must be set
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

    // Mail it
    mail($to, $subject, $message, $headers);
 ?>
Run Code Online (Sandbox Code Playgroud)

这是我的base64图像示例:http://jsfiddle.net/28nP4/

Car*_*lar 6

我尝试了不同的东西,我找到的唯一方法是上传图片并获取URL,我从这个链接获得了这个:http://j-query.blogspot.in/2011/02/save-base64-encoded-canvas-图像到png.html

这很简单:

<?php
    // requires php5
    define('UPLOAD_DIR', 'images/');
    $img = $_POST['img'];
    $img = str_replace('data:image/png;base64,', '', $img);
    $img = str_replace(' ', '+', $img);
    $data = base64_decode($img);
    $file = UPLOAD_DIR . uniqid() . '.png';
    $success = file_put_contents($file, $data);
    print $success ? $file : 'Unable to save the file.';
?>
Run Code Online (Sandbox Code Playgroud)

这会生成一个URL,因此<img src="'.$_POST['imageFromOtherPage'].'"/>,我使用生成的URL 而不是使用.工作得很完美!