首先,我try'd與Mail_mime梨做派HTML5畫布圖像,但我無法從我的共享主機提供商和的cPanel加載類。如何使用電子郵件
接下來我遵循this post 的指示。它將圖像寫入「temp」文件夾,但它寫入零字節。 顯然問題是,我錯過了什麼。 某處我閱讀了有關在編碼字符串中轉換+符號的消息,但我不確定?
的主要問題是如何發送電子郵件與畫布圖像,我沒有換去有關完整的知識。我跟着一些帖子,我認爲我需要在服務器端創建一個臨時映像文件,以便能夠將它附加到具有郵件功能的電子郵件中。由於實際寫入0字節,所以首先解決該問題似乎是合理的,並且郵件問題將自行解決。 從下面的評論,似乎創造一個形象首先是不neccesary,但我要調查一些之前我有一個可行的解決方案..
此外,如果任何人有另一種解決方案或者PHP類發送圖像郵件 的身體,而不是一個附件
我用Ajax發送此
var canvas = document.getElementById('doodle');
function serialize(canvas) {
return canvas.toDataURL();
}
這是服務器端
case 'doodle':
$image = $_POST['doodle'];
$data ="doedeliedoe";
$email ="[email protected]";
$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, "[email protected]", $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!";
}
}
謝謝,理查德
圖像已經base64編碼,爲什麼解碼到文件只是爲了讀取和編碼後? –
我不知道,我只是跟着他人的帖子,你可能是對的,但它仍然留給我爲什麼有0字節寫入.. – Richard