-
- 2005年4月10日 01:46
- Movable Type | Programming
さて,前のエントリで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で使うアーカイブディレクトリに移動する
ちなみに,エイリアスの設定は,たとえば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でそのままファイルに書き出してやれば完了です.簡単.
- Newer: W31Sファーストインプレッション
- Older: XML RPCを使ってMovable Typeのエントリをポスト
Comments:0
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