« 「初音ミク」画像検索騒動 | メイン | 無料で簡単に3Dモデルが作成「Google SketchUp」 »

Wordpressの携帯からのメール投稿プログラム

ここはMobAbleType(MT)なので、直接関係ないですが、最近はWordPress(wp)も多くなっています。
wpにはwp-mail.phpというメールから投稿できるプログラムが添付されていますが、日本語では使用できません。

どこかに無いかと探していて、見つけたのがSPaiSさんの「Wordpress のマルチバイト文字対応メール投稿(3)」でした。
携帯にも対応しているということで、早速ダウンロードしてみました。
圧縮ファイル「wp-mb_mail0.2.3.zip」を解凍すると次のファイルができます。

  • wp-mb_mail.php
  • pear/
    pear/PEAR.php
    pear/Net/
    pear/Net/POP3.php
    pear/Net/Socket.php
    pear/Mail/mime.php
    pear/Mail/mimeDecode.php
    pear/Mail/mimePart.php
    pera/Mail/xmail.dtd

pearでpear下のファイルをインストールしてある方は改めて、インストールする必要はありません。
utf-8が使えるエディタでwb-mb_mail.phpを開いて、pearディレクトリをアップする絶対パスを設定します。(下の下線の部分)
ini_set('include_path','/home/spais/spais.jp/public_html/pear/PEAR');
設定が済んだらファイルをアップします。
wb-mb_mail.phpのパーミッションは604とかでOKです。

次に画像をアップするディレクトリをwp-contentの下にuploadsの名前で作ります。
そしてパーミッションは777あるいは707で設定してください。

wp_set01 携帯でアップする場合は、administrator権限でログインし、管理画面のUsersで携帯のメルアドを持ったユーザを新たに作成します。また、携帯からのメールを受信するためにサーバ側で専用のメールアドレスを作成します。(例えば、hogehoge@example.com)

管理画面の「Options」の「writing」の下段「Post via e-mail」にその作ったメールアドレスのユーザを設定します。
ここに先の携帯のメールアドレスからメールを送りますので、このメールアドレスは公開しないほうが良いでしょう。
これで設定は終わりです。

あとは携帯からこのメールアドレスにメールを送ります。
メールを送ったあと、ブラウザでwb-mb_mail.phpにアクセスします。
例)example.comの/home/hogehoge/public_html/ディレクトリ直下にwp-mb_mail.phpをおいた場合は
http://www.example.com/hogehoge/wp-mb_mail.php
がアクセスURLになります。

そのたびにアクセスするのは面倒だという場合、wp-mb_mail.phpをcronで動作すると良いでしょう。

補足)
私の場合、画像添付の場合はWPにアップされたのですが、本文だけの場合はアップできませんでした。
調べてみると、100行目あたりの「subject]を取得する部分
$post_data['post_title'] = mb_convert_encoding($mail->headers['subject'], mb_internal_encoding(),$mail->parts[0]->ctype_parameters['charset']);
と120行目あたりの「Message body」
$post_data['post_content'] = mb_convert_encoding($mail->parts[0]->body, mb_internal_encoding(),$mail->parts[0]->ctype_parameters['charset']);
の、$mail->parts[0]の部分
これは配列に入れているのですが、bodyが本文だけのときは配列を使用しないようです。
したがって、本文だけか添付ファイルがあるか判断するため、「strtolower」関数を使用して、下記のように訂正しました。

「Subject」部分

if (strtolower($mail->ctype_primary) == "text"){
    $post_data['post_title'] = mb_convert_encoding($mail->headers['subject'], mb_internal_encoding(), $mail->ctype_parameters['charset']);
} else {
    $post_data['post_title'] = mb_convert_encoding($mail->headers['subject'], mb_internal_encoding(), $mail->parts[0]->ctype_parameters['charset']);
}

[Message body」部分

if (strtolower($mail->ctype_primary) == "text"){
   $post_data['post_content'] = mb_convert_encoding($mail->body, mb_internal_encoding(), $mail->ctype_parameters['charset']);      
} else {
  $post_data['post_content'] = mb_convert_encoding($mail->parts[0]->body, mb_internal_encoding(), $mail->parts[0]->ctype_parameters['charset']);
}

いずれも、その場しのぎですので、不都合があるかもしれません。

SPaisさんのプログラムを元に、POP3でなく、stdinを使ったバージョンをコーティングしています。
標準入出力を使う利点は、cronを使わなくとも、すぐに携帯などのメール投稿を本文に反映させることができる点です。

殆ど、コーティングは済んでいると言うか、最初の入力部分を少し直し、パーミッションをsystem関数で修正するようにしただけ。(^_^;
一応、au携帯からのメール投稿はできています。

まだ、POP3系のコーティング部分が残っているので、もう少し検証します。

 

トラックバック

このエントリーのトラックバックURL:
http://www.aubetec.com/hiruneko/cgi-bin/mt/hiruneko-tb.cgi/504

コメントを投稿

あなたの地区のお天気


Add Clips(ブックマーク)

ブックマークに追加する

アーカイブ



WWW を検索
aubetec.com を検索

Live Search


動画検索 Fooooo