unoh.github.com

さくらインターネットで添付画像付きのマルチパートメールをPHPで送ってみる

Fri Aug 10 05:22:30 -0700 2007

matsudaです。こんにちは。

最近周りの環境に触発され、PHPでプログラミングを初めています。
で、なんとなくHTMLで画像が添付されてて、マルチパートなメールを送りたくなったので簡単な雛形を作ってみました。

・最近プログラミングはじめた
・PEARのインストールとかよくわからない
・簡単に、添付画像とテキストでメールを送れればいい

な人にオススメです。

さくらインターネットを利用していて、PEARのライブラリのインストールとかよくわからない!っていう人に効果を発揮するはずです。宛先と送信元メアドをかきかえて、ためしに利用してみてください。

<?php

//内部のエンコード
mb_language("japanese");
mb_internal_encoding("UTF-8");

//画像の取得と画像のエンコード
$img = file_get_contents("http://art6.photozou.jp/pub/835/122835/photo/4258910_thumbnail.jpg");
$img_encode64_000 = chunk_split(base64_encode($img));

//ヘッダ情報
$sendto   = "ここに宛先メアド";
$subject  = "ここにサブジェクト";
$headers  = "FROM:" . "ここに送信元メアド". "\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-Type: multipart/related;boundary="1000000000"' . "\r\n";

//テキストパート、HTMLパート
$message =<<<END

--1000000000
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

テキストパートはここ

--1000000000
Content-Type: text/html; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

<html>
<body>
ここがHTMLパート<br>
画像表示はこんな感じで<br>
<img src="cid:img_id_000"<<br>
</body>
</html>

--1000000000
Content-Type: image/jpeg; name="images000.jpg"
Content-Transfer-Encoding: base64
Content-ID: <img_id_000>

$img_encode64_000

--1000000000--

END;

//メール用にサブジェクトと本文をエンコード
$subject = mb_encode_mimeheader($subject);
$message = mb_convert_encoding($message, "JIS");

//最後に送信!!
mail( $sendto, $subject, $message, $headers); 
?>