Home > Movable Type > | Programming > 続・PhotoBlogユーザビリティ改善計画

続・PhotoBlogユーザビリティ改善計画

さて,前のエントリでXML RPCを使ってMovable TypeにポストするコードをPHPで書きました.これでだいぶ投稿が楽になったのですが,もうひとつ,やりたいことが.

それは,Moblog.せっかくのPhotoBlogなので,携帯からメールで写真イメージを添付して投稿したいっていう欲求が生まれてきます.既存のMoblogサービスも結構あるのですが,今回のようにQuixotic Pixelsのテンプレなんていうニッチな分野に対応しているサービスはないでしょうから,こいつも自作してみる事にします.

今回の方針は以下の通り


  • SMTPサーバはPhotoBlogと同じマシンで動いているPostfixを使う事にする
  • PostfixのエイリアスにMoblog用のアドレスを追加し,サーバがメールを受信したらPHPに標準入力経由で渡す
  • PEARのMail_Mimeを利用して,Subject, Body, ファイルをぶった切る
  • んで,そいつらを前回作ったスクリプトに食わしてXML RPC経由で投稿する
  • イメージファイルはGDとかを使ってPhotoBlogで使うアーカイブディレクトリに移動する
この方針は,結構融通の利くサーバを使っていないと無理なのであまり他の人には参考にならないかもしれませんが,エイリアスではなくて.forwardとか駆使したり,ファイルのアップロードもXML RPC越しに行ったりすれば(実際,できます),Blogは商用のものだけど,Moblog用のSMTPサーバは自分の家のマシンっていう構成も可能です.

ちなみに,エイリアスの設定は,たとえばhogehoge@yoursite.netに送信するのであれば,/etc/postfix/aliasesの末尾あたりに

hogehoge:"|/path/to/file/moblog.php"

などど記述してやれば,パイプして渡してくれます.

最初は参考ってことでレッツPHPの写メールBBSのコードを見たんですが,こちらはソケットを開いてPOPサーバとお話をしている模様.さらに,そこからもらったメールデータを気合いでパーズしてます.
うーん,POPの作業は今回やらないにしても,ずいぶんと力技な雰囲気.巷にはPHPで作られたWebMailサービスも溢れてますし,誰かこのへんの作業をやってくれるクラスを作ってるはず,と思って調べてみました.そこで見つけたのが,上記のPEAR Mail_Mimeです.

Mail_mimeDecode::decode()を使うと,がっつりparseしたオブジェクトを返してくれます.引数に食わせる配列を「ヘッダ/ボディのデコードを行う」って感じで指定すれば,SubjectとかBodyとかファイルとか勝手にデコードしてくれます.素敵.

Mail_mimeDecode::decode()が返すオブジェクト$returnですが,$return->partsとすれば各Mime partごとに分かれた配列がもらえます.あとはそのpart内のヘッダのcontent typeを見て,textだったらメール本文,imageだったら写真って感じで処理を分ければOKです.
たとえば二つ目の要素が写真の場合,$return->parts[1]->bodyをfputsでそのままファイルに書き出してやれば完了です.簡単.

Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://blog.hiroaki.jp/mt/mt-tb.cgi/242
Listed below are links to weblogs that reference
続・PhotoBlogユーザビリティ改善計画 from Hirolog

Home > Movable Type > | Programming > 続・PhotoBlogユーザビリティ改善計画

Search
Feeds

Return to page top