オレオレライフログ:動作検証

前回の思い立ちによりライフログを作ることに決めたのですが、

いくつか環境の面で、実装可能かどうか検証する必要があるので、先に簡単な動作確認だけ行いたいと思います。

まずは最低限必要な機能として、

携帯から画像添付メールを送信すると画像がブラウザで見れるようになる機能を試してみます。

この機能を細かく分けると

  • メールの受信

  • 自動的にプログラム起動

  • 画像を抜き出し表示

と、分けれます。

特に1と2に関しては、メールサーバの制御が必要となりますが、残念なことに、自前サーバではメールサーバを立てることができなかったので(プロバイダの関係?)、以前利用していたレンタルサーバ(さくらのレンタルサーバ)を利用することにします。

メールの受信

メールの受信のために、ライフログ専用のアカウントを作成しました。あて先はこちら。

lifelogアットplayispeaceドットsakuraドットneドットjp

(「アット」は「@」、「ドット」は「.」に置き換えてください)

自動的にプログラム起動

そしてこちら(はてな)を参考にしながら自動起動用のプログラムを作成します。

起動プログラムの中身は以下

<?php
// 標準入力から取得した内容をmail.logファイルに書き出し
$log = dirname(__FILE__) . "/mail.log";

$fp = fopen($log, "w+");
$stdin = fopen('php://stdin', 'r');

while(!feof($stdin)){
	$data = fread($stdin, 4096);
	fputs($fp, $data);
}
fclose($stdin);

fputs($fp, "n");
fclose($fp);
?>

いったん、メールの中身をmail.logに保存しておきます。

画像を抜き出し表示

そして、そこから画像を抜き出し表示するプログラムがこちら

<?php
// 本文・添付ファイルを別々に分解するため、boundary=?? を取り出し
$log = dirname(__FILE__) . "/mail.log";

$contents_src="";
$fp = fopen($log, "r");
while (!feof($fp)) {
	$contents_src .= fread($fp, 8192);
}
fclose($fp);
preg_match("/boundary="(.*)"/i", $contents_src , $boundary);

// ヘッダ・本部・添付をばらばらに
$data = split($boundary[1] , $contents_src , 2);
$data = split($boundary[1] , $data[1]);

// 本文を取得
$body = split("\n\n" , $data[1]);
$body[1] = preg_replace("/n/", "", $body[1]);
//	$body[1] = mb_convert_encoding($body[1], "UTF-8" , "JIS");

// 添付を取得
$out = split("\n\n" , $data[2]);
$out = preg_replace("/n/", "", $out[1]);
?>
<html>
<body>
<img src="data:image/jpeg;base64,<?=$out?>" />
</body>
</html>

これで、完了です。

動作確認

まずはコチラ宛に画像を添付したメールを送信

lifelogアットplayispeaceドットsakuraドットneドットjp

(「アット」は「@」、「ドット」は「.」に置き換えてください)

つぎに画像確認画面にアクセス

添付した画像が確認できましたでしょうか?もし不具合がある場合は、ご報告いただくと助かります。

なお、1メールのみ保存しておりますので、常に上書きされる状態になっていますので、ご注意ください。あと、セキュリティの観点でもっと修正くわないといけませんね。。。

							Tags: [lifelog](/tag/lifelog) 

		« [オレオレライフログを作る](/189/orelifelog_requirement)

		[オレオレライフログ:位置情報取得](/214/orlifelog_gpstest) »

	[画像未復旧: similar.png](http://blog.playispeace.com/img/similar.png) 関連ありそうなエントリー