PHPMailer, AddStringAttachment y Data URI Scheme
Pregunta
He convertido el contenido de un elemento canvas
en datos (esquema URI) utilizando toDataURL ()
( $ contact_image_data
) y quiero para enviar esto por correo electrónico como un archivo adjunto. Así es como tengo configurado 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);
Me pregunto si esto es realmente posible, y si es así, qué pasos me faltan.
Puedo enviar un correo electrónico, adjuntar un archivo llamado "test.png" que contiene el contenido de $ contact_image_data
, pero en realidad no crea una imagen.
Cualquier ayuda sería agradecida .
Samuel.
Solución
Sí, debería ser posible. ¿Está llamando aDataURL () con el tipo MIME 'image / png' para que sepa cómo generarlo?
Intente dividir su secuencia de comandos en dos componentes: asegúrese de que realmente tenga un PNG y luego trate de enviarlo por correo.
Por ejemplo, ¿se abrirá test.png en su computadora cuando esté escrito? ..
<?php
$contact_image_data="data:image/png;base64,iVBORw0KGgo[...]";
$fp = fopen('test.png', 'w');
fwrite($fp, $contact_image_data);
fclose($fp);
?>
Espero que ayude un poco!
Otros consejos
Resulta que necesitaba quitar los datos de : image / png; base64,
y base64_decode ()
los datos:
$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);