【问题标题】:PHPMailer, AddStringAttachment and Data URI SchemePHPMailer、AddStringAttachment 和数据 URI 方案
【发布时间】:2009-07-29 17:52:46
【问题描述】:

我已使用toDataURL() ($contact_image_data) 将canvas 元素的内容转换为数据(URI 方案),我想通过电子邮件将其作为附件发送。这就是我目前设置 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);   

我想知道这是否真的可行,如果可以,我缺少哪些步骤。

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

任何帮助都会非常感激。

塞缪尔。

【问题讨论】:

    标签: php phpmailer


    【解决方案1】:

    事实证明我需要删除 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);          
    

    【讨论】:

    • 如果不想substr DataURI,也可以用file_get_contents获取数据,如下:$data = file_get_contents($contact_image_data);
    【解决方案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);
    ?>
    

    希望能有所帮助!

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 2023-04-06
    • 1970-01-01
    • 2011-10-12
    • 2010-09-28
    • 2013-11-06
    • 1970-01-01
    相关资源
    最近更新 更多