PHPMailer, AddStringAttachment и схема URI данных
Вопрос
Я преобразовал содержимое 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
, но на самом деле это не создает изображения.
Любая помощь будет много оценил.
Сэмюэл.
Решение
Да, это должно быть возможно.Вы вызываете 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);
?>
Надеюсь, это немного поможет!
Другие советы
Оказывается, мне нужно было раздеть 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);