PHPMailer, AddStringAttachment und Daten URI-Schema
Frage
Ich habe den Inhalt eines canvas
Element-Daten (URI-Schema) mit toDataURL()
($contact_image_data
) umgewandelt und ich möchte dies als Anhang per E-Mail senden. Dies ist zur Zeit, wie ich PHPMailer ein:
$contact_image_data="data:image/png;base64,iVBORw0KGgo[...]";
$filename="test.png";
$encoding = "base64";
$type = "image/png";
$mail->AddStringAttachment($contact_image_data, $filename, $encoding, $type);
Ich frage mich, ob dies tatsächlich möglich ist, und wenn ja, welche Schritte ich fehle.
Ich kann eine E-Mail senden, eine Datei anhängen „test.png“ genannt, die den Inhalt von $contact_image_data
enthält, aber es nicht wirklich ein Bild erstellen.
Jede Hilfe wäre viel geschätzt.
Samuel.
Lösung
Ja sollte es möglich sein. Rufen Sie toDataURL () mit dem 'image / png' MIME-Typ, so weiß er, wie es ausgegeben?
Versuchen Sie Ihr Skript in zwei Komponenten zu brechen -. Sicherstellen, dass Sie wirklich eine PNG haben und versuchen Mailing es
Zum Beispiel wird auf Ihrem Computer test.png geöffnet, wenn geschrieben? ..
<?php
$contact_image_data="data:image/png;base64,iVBORw0KGgo[...]";
$fp = fopen('test.png', 'w');
fwrite($fp, $contact_image_data);
fclose($fp);
?>
Ich hoffe, das hilft ein wenig!
Andere Tipps
Es stellt sich heraus, ich brauchte die data:image/png;base64,
Abschnitt abzustreifen und base64_decode()
die Daten:
$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);