2016-04-13 24 views
0

Google Maps Static APIを使用して画像をPNG形式でリクエストしています。現在、私はこのイメージをファイルシステムに保存しています。その後、PHPMailerでこのイメージをクライアントに送信しています。すべてのメールが送信されると、イメージはファイルシステムから削除されます。pysical画像ファイルを持たないメールに画像を埋め込む

ファイルシステムにイメージを保存し、メモリからイメージオブジェクトを使用してMail経由で送信する手順を保存するようになりました。しかし、それを使用するには、PHPMailerがファイルシステム上にImageを持っている必要があります。

$fp = fopen('../../img/staticMap/staticMap.png', 'w+'); 

fputs($fp, $image); 
fclose($fp); 
unset($image); 

$file = "../../img/staticMap/staticMap.png"; 
$notifications->notifySingleUser($file); //Call my Mail Function 

埋め込みイメージのファイルシステムと私のメール機能に送信する静的APIから

要求イメージ

$URL = "http://maps.googleapis.com/maps/api/staticmap?center=Albany,+NY&zoom=13&scale=false&size=600x300&maptype=roadmap&format=png&visual_refresh=true"; 
$image = file_get_contents($URL); 

画像を保存:私は現在、何

メールで

$mail = new PHPMailer(); 
$mail->CharSet = 'UTF-8'; 
$mail->IsHTML(true); 
$mail->AddEmbeddedImage($file, "staticMap"); 
$mail->Body = "<img width="600" height="300" src="cid:staticMap">"; 

I'veもいくつかの研究PHPMailer attachment, doing it without a physical fileを行って、しかし、ここで彼らはただAddAttachmentでそれを行う方法を話しているが、私はAddEmbeddedImageにしたいです。私もそれを試しました、メールはエラーなしで送信されますが、イメージはありません。

これも可能ですか?はいの場合は、どうすればアーカイブできますか?

何か助けていただければ幸いです。

答えて

0

それは常にread the docsに役立ちます。正確に何をしたいんあなたが探している機能addStringEmbeddedImageで、:

$URL = "http://maps.googleapis.com/maps/api/staticmap?center=Albany,+NY&zoom=13&scale=false&size=600x300&maptype=roadmap&format=png&visual_refresh=true"; 
$image = file_get_contents($URL); 
$mail->addStringEmbeddedImage($image, 'staticMap', 'map.png', 'base64', 'image/png'); 
$mail->Body = '<img width="600" height="300" src="cid:staticMap">'; 

が埋め込まれた画像を使用する長所と短所は確かにありますが、データのURLが特に貧困クライアントとの互換性を持っているので、一般的に最悪のオプションです。画像への動的なリンクは、Googleマップでは信頼できない可能性があります。そのため、ダイレクトマップの参照をプロキシしてキャッシュする必要があります。これは、毎回APIを使用するよりもはるかに高速で、APIが応答しないか遅い場合に古いバージョンを提供できるので、より信頼性も高くなります。

0

画像を埋め込むことは、多くの理由で悪いことです。クライアントからクライアントへの経験はさまざまです。いくつかは画像を表示し、一部は添付しません。一部は添付します。画像を本体に追加し、base64を使用して画像をエンコードすることもできます。イメージの戻り値の型を64に設定します。

ここでは、base64イメージの例を示します。

$mail->Body = '<img src="data:image/gif;base64,'.base64_encode($file).'">'; 
0

これは、HTML形式の電子メールである場合は、絶対URLで標準のイメージタグを提供するだけです:

$mail->Body = '<img width="600" height="300" src="http://www.someimagesite/img/excellentComposition.jpg">'; 
関連する問題