gpt4 book ai didi

php - 如何通过电子邮件发送 HTML5 Canvas 图像

转载 作者:行者123 更新时间:2023-12-04 05:30:51 26 4
gpt4 key购买 nike

首先,我尝试使用 Pear 的 Mail_mime 执行此操作,但无法从共享主机提供程序和 cpanel 加载该类。

接下来我遵循了 this post 的指示
.它将图像写入“temp”文件夹,但写入零字节。
显然,问题是,我错过了什么。
我在某处读到有关在编码字符串中转换 + 符号的内容,但我不确定?

主要问题是如何通过电子邮件发送 Canvas 图像,我对此没有完整的了解。我关注了一些帖子,我认为我需要在服务器端创建一个临时图像文件,以便能够使用内置邮件功能将其附加到电子邮件中。因为实际写入的字节数为 0,所以首先解决该问题似乎是合乎逻辑的,然后邮件问题就会自行解决。
从下面的评论来看,似乎不需要先创建一个图像,但在我有一个可行的解决方案之前,我必须进行更多的调查。


此外,如果有人有其他解决方案或 php 类在邮件正文中发送图像
与附件相反

我用ajax发送这个

var canvas = document.getElementById('doodle');
function serialize(canvas) {
return canvas.toDataURL();
}

这是服务器端
case 'doodle':
$image = $_POST['doodle'];
$data ="doedeliedoe";

$email ="from@msn.com";
$headers="From:".$email."\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
list($settings, $encoded_string) = explode(',', $image);
list($img_type, $encoding_method) = explode(';', substr($settings, 5));

if($encoding_method == 'base64'){

$file=fopen("/home/user/public_html/user/temp/newLego.png",'w+');

fwrite($file,base64_decode($encoded_string)) ;
fclose($file);
}
$my_file = "newLego.png";
$my_path = "/home/user/public_html/user/temp/";
$my_subject = "My Design";
$my_message = "Designed by ".$email;
$this-> mail_attachment($my_file, $my_path, "mymail@gmail.com", $email, $email, $email, $my_subject, $my_message);



function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: ".$from_name." <".$from_mail.">\r\n";
$header .= "Reply-To: ".$replyto."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$header .= $content."\r\n\r\n";
$header .= "--".$uid."--";
if (mail($mailto, $subject, "", $header)) {
//echo "mail send ... OK"; // or use booleans here
} else {
// echo "mail send ... ERROR!";
}
}

谢谢,理查德

最佳答案

你首先应该更好地让自己适应你面临的问题。是不是:

  • 将 Canvas 转换为图像"file" - 或 -
  • 将图像"file"附加到外发邮件消息

  • 如果不执行 1.,您将无法在您的场景中执行 2.,但是 2. 可以独立于 1..

    我建议你问一个或另一个。整合两者实际上非常简单:
  • 如果您有一个仅接受附件文件的邮件库,则需要创建一个临时文件。您可以使用 SplTempFileObject 在 PHP 中创建临时文件。很容易。
  • 如果您的邮件库接受附件的二进制字符串,则可以只传递二进制字符串。
  • 如果您需要调试从 Canvas 位图数据创建文件是否有效,您应该保存到文件并测试文件是否为图像(这最容易手动完成,但是这也可以自动化)

  • 抱歉,如果这个答案更像是评论,那只是我在实际提供代码方面没有多大用处,因为问题是如此分割。

    关于php - 如何通过电子邮件发送 HTML5 Canvas 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12651504/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com