4

更新: 受け取った画像は、キャンバスのサイズの空白の画像です。キャンバスからのイメージではありません。新しいキャンバス PNG を DOM に挿入できるので、画像データが適切であることがわかります。

さらに: PHP フォームに送信する前に画像データをコピーし、そのコードを別のページのタグに貼り付けると、その src と正しい画像が表示されます! ここにとても近い!!

ユーザーが HTML5 キャンバスに画像を作成します。画像を電子メールの添付ファイルとしてユーザーに送信する必要があります。画像をキャプチャし、jquery AJAX を使用して PHP ページに投稿できます。

はい、私はこの点にたどり着いた方法である他の関連する投稿を数十ほど読みました。いいえ - 私の質問に答えてくれる人はいません - この部分は常にスキップされます。いいえ - PHPMailer (恐ろしいドキュメント) やその他のクラスは使用したくありません。これは、PHP の mail() を使用して可能です。そして、私は近くにいます。

これは、私の Web アプリケーションの JavaScript です。

var data = "to=" + to + "&subject=" + subject;          
var canvas2 = document.getElementById("canvas");
var strDataURI = canvas2.toDataURL(); 
data = data + "&attachment="  + strDataURI;

$.ajax({
    type: "POST",
    url: "mail2.php",
    data: data,
    success: function(){

        $("#loading").fadeOut(100).hide();
        $('#message-sent').fadeIn(500).show();               
   }
});

このデータを POST します。

 "to=erik@mydomain.com&subject=test&attachment=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3gAAAHBCAYAAAA7NBnaAAA..."

この PHP ページ (更新された、よりシンプルな) に:

<?PHP    
$to =   $_REQUEST['to'];
$subject =  'PHP Mail Attachment Test';
$bound_text =   "jimmyP123";
$bound =    "--".$bound_text."\r\n";
$bound_last =   "--".$bound_text."--\r\n";


$attachment = $_REQUEST['attachment'];
$attachment =  substr($attachment,strpos($attachment,",")+1);
$attachment = chunk_split($attachment);



$headers =  "From: admin@server.com\r\n";
$headers .=     "MIME-Version: 1.0\r\n"
."Content-Type: multipart/mixed; boundary=\"$bound_text\"";

$message .=     "If you can see this MIME than your client doesn't accept MIME types!\r\n"
.$bound;

$message .=     "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"
."Content-Transfer-Encoding: 7bit\r\n\r\n"
."hey my <b>good</b> friend here is a picture of regal beagle\r\n"
.$bound;

//$file =   file_get_contents("http://www.litfuel.net/php/regal_004.jpg");

$message .=     "Content-Type: image/png; name=\"index.png\"\r\n"
."Content-Transfer-Encoding: base64\r\n"
."Content-disposition: attachment; file=\"index.png\"\r\n"
."\r\n"
.$attachment
//.chunk_split(base64_encode($file))
.$bound_last;

if(mail($to, $subject, $message, $headers))
{
     echo 'MAIL SENT';
} else {
     echo 'MAIL FAILED';
}

?>
4

1 に答える 1

0

ヒアドキュメントを使用していることに気付きました。それがここで問題を引き起こしている可能性があります。

メールの行末は\r\n(CRLF) でなければならないので、代わりに文字列連結で書き直すことをお勧めします。

また、行の長さが 76 以下になるように適用chunk_split()してください。$attachment

于 2012-09-28T06:56:54.430 に答える