我正在尝试附加一个像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吗? - 我是否需要使用任何其他代码来附加图像? - 最后,我如何将图像作为内嵌图像附加?
提前致谢:)请告诉我,因为我有点卡住了:(
答案 0 :(得分:1)
使用images
参数将图像作为内联附件包含在API调用中。您需要提供图像名称(Content-ID),内容(作为base64编码的字符串)和图像MIME类型。在' src'中引用图片名称。在您的HTML内容中:
<img src="cid:image_name" />
因此您需要将现有数组包装到另一个数组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库。