2009-07-29 9 views
7

Przekonwertowałem zawartość elementu canvas na dane (Schemat URI) przy użyciu toDataURL() ($contact_image_data) i chcę wysłać to poprzez e-mail jako załącznik. Obecnie jest to w jaki sposób mam skonfigurować PHPMailer:PHPMailer, AddStringAttachment and Data URI Scheme

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

Zastanawiam się, czy jest to rzeczywiście możliwe, a jeśli tak, to jakie kroki mi brakuje.

Mogę wysłać wiadomość e-mail, dołączyć plik o nazwie "test.png", który zawiera treść $contact_image_data, ale w rzeczywistości nie tworzy obrazu.

Każda pomoc będzie uznana za za dużo.

Samuel.

Odpowiedz

2

Tak, powinno być możliwe. Czy wywołujesz funkcję DataLock() z typem MIME "image/png", aby wiedział, jak ją wyprowadzić?

Spróbuj podzielić swój skrypt na dwa komponenty - upewnij się, że masz naprawdę PNG , a następnie spróbuj go wysłać.

Na przykład, test.png otwarte na komputerze podczas napisane? ..

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

nadzieję, że pomoże trochę!

+0

Dziękuję To był bardzo pomocny-dopiero po grze z 'fwrite' że znalazłem to http: //canvaspaint.org/blog/2007/01/saving-images/#comments, które dały mi moją odpowiedź. Pozdrawiam! –

+0

Zarchiwizowana wersja linku, o którym mowa w powyższym komentarzu: https://web.archive.org/web/20110305022152/http://canvaspaint.org/blog/2007/01/saving-images/ – danShumway

13

Okazuje się, że muszę rozebrać sekcję data:image/png;base64, i base64_decode() dane:

$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

Dzięki temu bardzo mi pomogło . działa idealnie! – Julez