2009-07-29 22 views
7

Ho convertito il contenuto di un elemento canvas in dati (schema URI) utilizzando toDataURL() ($contact_image_data) e desidero inviarlo via email come allegato. Questo è attualmente il modo ho PHPMailer configurare:PHPMailer, AddStringAttachment e Schema URI dati

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

Mi chiedo se questo è in realtà possibile, e in caso affermativo, quali passi mi manca.

Posso inviare una e-mail allegando un file denominato "test.png" che contiene il contenuto di $contact_image_data, ma in realtà non crea un'immagine.

Qualsiasi aiuto sarebbe molto apprezzato.

Samuel.

risposta

2

Sì, dovrebbe essere possibile. Stai chiamando aDataURL() con il tipo MIME 'image/png' in modo che sappia come emetterlo?

Prova a suddividere il tuo script in due componenti: assicurati di avere un PNG quindi prova a inviarlo tramite posta elettronica.

Per esempio, si test.png aperta sul computer quando scritto? ..

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

Speranza che aiuta un po '!

+0

Grazie, Questo è stato davvero utile, è stato solo dopo aver giocato con 'fwrite' che ho trovato questo http: //canvaspaint.org/blog/2007/01/saving-images/#comments che mi ha dato la mia risposta. Saluti! –

+0

Versione archiviata del collegamento di cui sopra commento: https://web.archive.org/web/20110305022152/http://canvaspaint.org/blog/2007/01/saving-images/ – danShumway

13

Si scopre che mi serviva per mettere a nudo la sezione data:image/png;base64, e base64_decode() i dati:

$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);   
+0

Grazie questo mi ha davvero aiutato molto . funziona perfettamente! – Julez