Схема PHPMailer, AddStringAttachment и URI данных - PullRequest
8 голосов
/ 29 июля 2009

Я преобразовал содержимое элемента canvas в данные (схема URI), используя toDataURL() ($contact_image_data), и я хочу отправить его по электронной почте в виде вложения. Вот как я сейчас настроил 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, но на самом деле он не создает изображение.

Любая помощь будет очень оценена.

Самуэль.

Ответы [ 2 ]

15 голосов
/ 29 июля 2009

Оказывается, мне нужно было разделить 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);          
2 голосов
/ 29 июля 2009

Да, это должно быть возможно. Вы вызываете toDataURL () с MIME-типом 'image / png', чтобы он знал, как его вывести?

Попробуйте разбить ваш скрипт на два компонента - убедитесь, что у вас действительно есть PNG , затем попробуйте отправить его по почте.

Например, будет ли test.png открываться на вашем компьютере при записи? ..

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

Надеюсь, это немного поможет!

...