PHPMailer,AddStringAttachment和Data URI Scheme

Sam*_*all 8 php phpmailer

我已经canvas使用toDataURL()($contact_image_data)将元素的内容转换为数据(URI Scheme ),并且我希望通过电子邮件将其作为附件发送.这是我目前如何设置PHPMailer:

$contact_image_data="data:image/png;base64,iVBORw0KGgo[...]";
$filename="test.png"; 
$encoding = "base64"; 
$type = "image/png";
$mail->AddStringAttachment($contact_image_data, $filename, $encoding, $type);   
Run Code Online (Sandbox Code Playgroud)

我想知道这是否真的有可能,如果是的话,我错过了哪些步骤.

我可以发送一封电子邮件,附上一个名为"test.png"的文件,其中包含的内容$contact_image_data,但实际上并没有创建图像.

任何帮助将表示赞赏.

塞缪尔.

Sam*_*all 16

事实证明我需要剥离data:image/png;base64,部分和base64_decode()数据:

$contact_image_data="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA";
$data = substr($contact_image_data, strpos($contact_image_data, ","));
$filename="test.png"; 
$encoding = "base64"; 
$type = "image/png";
$mail->AddStringAttachment(base64_decode($data), $filename, $encoding, $type);          
Run Code Online (Sandbox Code Playgroud)


Al.*_*Al. 2

是的,这应该是可能的。您是否使用“image/png”MIME 类型调用 toDataURL() 以便它知道如何输出它?

尝试将您的脚本分成两个部分 - 确保您确实有一个 PNG ,然后尝试邮寄它。

例如test.png写入后会在你的电脑上打开吗?...

<?php
$contact_image_data="data:image/png;base64,iVBORw0KGgo[...]";
$fp = fopen('test.png', 'w');
fwrite($fp, $contact_image_data);
fclose($fp);
?>
Run Code Online (Sandbox Code Playgroud)

希望有点帮助!