Mandrill:如何将图像作为内联和附件附加?

时间:2018-02-01 20:47:12

标签: php mandrill

我正在尝试附加一个像base64格式的图像,如

  

数据:图像/ JPEG; BASE64,/ 9j中....

我在php中有以下附件代码:

$attachment_encoded5 = $record['upload_file'];
                //$attachment_encoded5 = base64_encode($record['upload_file']);
                $attachment_array[] = 
                    array(
                        'type' => 'image/jpeg',
                        'name' => $record['name'].".jpeg",
                        'content' => $attachment_encoded5
                    );

所以我现在在做错​​了: - 我需要将dataurl图像转换为base64吗? - 我是否需要使用任何其他代码来附加图像? - 最后,我如何将图像作为内嵌图像附加?

提前致谢:)请告诉我,因为我有点卡住了:(

1 个答案:

答案 0 :(得分:1)

使用images参数将图像作为内联附件包含在API调用中。您需要提供图像名称(Content-ID),内容(作为base64编码的字符串)和图像MIME类型。在' src'中引用图片名称。在您的HTML内容中:

<img src="cid:image_name" />

READ MORE

因此您需要将现有数组包装到另一个数组images

function addInlineImage(){

   $image_name=$record['name'].".jpeg";

   $attachment=array(

    'images'=>

      array(
        'type' => 'image/jpeg',
        'name' => $image_name,
        'content' => $attachment_encoded5
      )

   );

  return [$attachment,$image_name];
}

您可以从该功能返回图像名称和附件,然后使用

list($attachment,$image_name)=addInlineImage();

然后在标签中使用它,如下所示

<img src="cid:<?=$image_name?>" />

只需确保您在addInlineImages()函数中提供的附件为base64encoded

对于大多数SMTP库,包括内嵌图像会自动处理。例如,如果您插入内嵌图像,则会添加一个img标记,然后引用附加图像的Content-ID。如何添加内嵌图像取决于所使用的SMTP库。