PHPMailer, AddStringAttachment и схема URI данных

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

Любая помощь будет высоко оценена.

Самуэль.

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

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

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

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

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

Оказывается, мне нужно было лишить data:image/png;base64, section и 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);