2016-04-08 9 views
0

私は動的に作成されたキャンバスオブジェクトをメールに埋め込みイメージとして送信しようとしています。そのためにキャンバスをdataurlに変換してメーラーライブラリに与えました。残念ながら、それはdataurlで動作していません。PHP PEAR MAIL base64イメージまたはdataurlを使用していません

実際のパスを持つsrcで試してみましたが効果はありましたが、dataurlに問題があります。

<?php 
require_once "Mail.php"; 
require_once 'Mail/mime.php'; 
$from = "[email protected]"; 
$subject = $_REQUEST['subject']; 
$data=$_REQUEST['data']; //dataurl 
$img = $_REQUEST['body']; 
$host = "ssl://smtp.gmail.com"; 
$port = "465"; 
$username = "[email protected]"; 
$password = "mypassword"; 
$to="[email protected]"; 
$body="<html><body><h1>Report is Here</h1><img src='cid:whatever'/></body></html>"; 
$headers = array ('From' => $from, 
    'To' => $to, 
    'Subject' => $subject); 

$smtp = Mail::factory('smtp', 
    array ('host' => $host, 
     'port' => $port, 
     'auth' => true, 
     'username' => $username, 
     'password' => $password)); 

$mime = new Mail_mime("\n"); 
$mime->setTXTBody(""); 
$mime->addHTMLImage($data, "image/png","1234.png",false,"whatever"); 
$mime->setHTMLBody($body); 
$body = $mime->get(); 

$headers = $mime->headers($headers); 

$mail = $smtp->send($to, $headers, $body); 
; 

if (PEAR::isError($mail)) { 
echo("<p>" . $mail->getMessage() . "</p>"); 

} else { 
echo("Message successfully sent"); 
echo "<img src='data:image/png;base64,".$data."'/>"; 
} 

?> 

最後にメールを送信したようにメールが正常に送信され、画像が描画されましたが、メールには表示されません。

答えて

0

文字列を渡していますが、addHTMLImageにはファイル名またはバイナリの内容が必要です。

一時ファイルに格納してパスを渡すか、base64でエンコードされたデータをバイナリにデコードして渡します。

関連する問題