PHPMailer, AddStringAttachment e Esquema URI Dados
Pergunta
Eu ter convertido o conteúdo de um elemento canvas
aos dados (Esquema URI) usando toDataURL()
($contact_image_data
) e eu quero enviar esta via e-mail como um anexo. Este é atualmente como tenho PHPMailer configurar:
$contact_image_data="data:image/png;base64,iVBORw0KGgo[...]";
$filename="test.png";
$encoding = "base64";
$type = "image/png";
$mail->AddStringAttachment($contact_image_data, $filename, $encoding, $type);
Eu estou querendo saber se isso é realmente possível, e em caso afirmativo, quais os passos que estou em falta.
Eu posso enviar um e-mail, anexar um arquivo chamado “test.png”, que contém o conteúdo do $contact_image_data
, mas que na verdade não criar uma imagem.
Qualquer ajuda seria muito apreciado.
Samuel.
Solução
Sim, deve ser possível. Você está chamando toDataURL () com o tipo 'image / png' MIME para que ele saiba como saída dele?
Tente quebrar o seu script em dois componentes -. Certifique-se de realmente ter um PNG então tentar enviá-la
Por exemplo, vai test.png aberta no seu computador quando foi escrito? ..
<?php
$contact_image_data="data:image/png;base64,iVBORw0KGgo[...]";
$fp = fopen('test.png', 'w');
fwrite($fp, $contact_image_data);
fclose($fp);
?>
Espero que ajude um pouco!
Outras dicas
Acontece que eu precisava para tirar a secção data:image/png;base64,
e base64_decode()
os dados:
$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);