Home > Wordpress > Wordpress のマルチバイト文字対応メール投稿(3)

Wordpress のマルチバイト文字対応メール投稿(3)

Wordpress のマルチバイト文字対応メール投稿(2) で up したスクリプトが動かないと言うご指摘を受け(marupon さんありがとうございます)、作りかけの次バージョンを取り急ぎ動くようにして up しましたので、一番下のリンクからご自由にどうぞ。

説明

本バージョンから PEAR の Net_POP3 と Mail_mimeDecode を利用していますので、スクリプト単体ではなく PEAR の必要なライブラリも同梱しています。
と、同時に Wordpress の attachment API を利用して Wordpress のファイルアップロード機能によりメールに添付された画像をサーバにアップロードしています。
attachment API は Wordpress 2.1 以降で利用可能なので、Wordpress 2.1以降でないと動きません。
本スクリプトで添付画像付メールを投稿した場合、管理画面のファイルアップロードで管理することが可能です。

PEAR について

すでに PEAR を導入されているサーバでしたら Net_POP3 と Mail_mimeDecode が必須ライブラリとなります。依存関係は PEAR のサイトを確認して下さい。
PEAR を導入されていないサーバでしたら圧縮ファイルを解凍し、ディレクトリ構造を維持したままサーバへアップロードして下さい。

設置方法

ダウンロードしたファイルを解凍して、そのまま Wordpress を設置しているディレクトリへアップロードして下さい。
圧縮ファイルの中身は下記のようになっています。ならない場合は下記を参考にして下さい。

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

wp-mb_mail.php のパーミッションは 604 とかで OK です。同梱の PEAR ライブラリに関しては PEAR ライブラリに依存します。

使い方

まず、投稿するために使う携帯電話のメールアドレス(差出人)を新しいユーザとして Wordpress に追加して下さい。名前とかはお好きにどうぞ。
次に管理画面の「各種設定」>「投稿設定」>「メールでの投稿」に記事として送られてくるメールを受け取るメールアドレス(受取人)を設定して下さい。
投稿した記事のカテゴリはここの設定に依存します。
ランダムストリング云々は「受取人のメールアドレスは推測されにくいメールアドレスの方がいいから、このランダムな文字列をローカルパートにしてみてはどうかな?」っつう事だと思うので余り気にしないで下さい。
いや、ちょっとは気にして下さい。このメールアドレスは人に知られない事にこしたことはありません。

次に wp-mb_mail.php を UTF-8 が読めるテキストエディタで開き

/**
* メールで投稿したエントリのステータス
* draft:下書き
* private:プライベート
* publish:公開
*/
$post_data['post_status'] = 'publish';
 
/**
* PEAR ライブラリのディレクトリを絶対パスで指定
* 既に指定があるときはしなくて OK
*/
ini_set('include_path','/home/spais/spais.jp/public_html/pear/PEAR');

この部分を環境に合わせて編集して下さい。

編集が終わったら wordpress をインストールしたディレクトリに全てのファイルとディレクトリをアップロードして下さい。

以上の設定が完了したら受取人のメールアドレスへと差出人のメールアドレスからメールを送信してみて下さい。
以前のバージョンと同じく件名がタイトルで本文が記事本文です。
添付画像の貼り付け方は以前と違い、添付した順番そのままで表示されます。
また、ファイルアップロード機能でアップロードしたときのサムネイル画像が img タグで貼り付けられ、img タグのリンクに元画像が指定されるようになっています。
この辺りが気に食わないようでしたら各自修正して下さい。

注意点

なんでもかんでも投稿しないよう、あらかじめ投稿者として追加したメールアドレスからでないと投稿できない仕様になっておりますが、メールヘッダの From を見てるだけですので、なるべくなら受け取るメールアドレスは推測しにくいものを使って下さい。

また、PHP4 だと標準の設定ではメモリが足りないかもしれません。テスト環境では memory_limit を 16M にすることで動作しました。
メモリ関係でエラーが発生するようでしたら設定を変えて下さい。

今回もまた au でしか確認していません。DoCoMo でもちょこっと試しましたが、2.0 にバージョンアップしているようなので予断は許さぬ状況です。

ダウンロード

まだ au の1機種でしか動作の確認を取っていません。
もしこのスクリプトを使ってまずいことになっても責任は取れません。
またこのスクリプトのライセンスは クリエイティブ・コモンズ 表示 – 継承 3.0 Unported を適用しています。
以上の事に同意をした上でダウンロードして下さい。

2007/10/07 追記

ごぶさんにご指摘頂きプログラムをアップデートしました。
wp-mb_mail version 0.2.2 ダウンロード

2007/10/07 追記

ごぶさんに再度ご指摘頂きプログラムをアップデートしました。

  1. アップロードファイル名が重複した場合上書きされてしまうため、ファイル名を”記事のID_連番”としました。
  2. img タグの alt 属性を指定できるようにしました。

wp-mb_mail version 0.2.3 ダウンロード

2007/10/29 追記

祐作さんにご指摘頂きプログラムをアップデートしました。

  1. シングルパートのメールを正常に処理できていなかったため、これを修正しました。

wp-mb_mail version 0.2.4 ダウンロード

2007/11/15 追記

なんと!祐作さんが STDIN を利用したバージョンを作ってくださいました!
送ったメールが直接 PHP に渡される素晴らしいものです。詳しくは下記リンクより祐作さんのサイトへアクセスして下さい。
STDINを利用したWordpressのマルチバイト文字対応メール投稿 – ひるねこ日記

動作報告がいただければ助かりマスク。

Comments:16

ごぶ 07-10-07 (日) 0:08

ずばらしい機能に感謝感激です。

WPme2.2.3+DoCoMoで試行してみました。
若干修正したらうまくいきました。

wp-mb_mail.php 0.2.1
line45
require_once ‘Mail.php’;→require_once ‘Mail/mime.php’;
Mail.phpというのがないとエラーになったので、あるファイル名を入れてみた。

line49
require_once $_SERVER['DOCUMENT_ROOT'].’/WP/wp-admin/admin-functions.php’;

require_once $_SERVER['DOCUMENT_ROOT'].’/ほげほげ/wp-admin/admin-functions.php’;
/home/user/ほげほげ以下にWPをいれたのでそれにあわせて修正

この2点をなおしたらうまく投稿されました。

nic 07-10-07 (日) 11:02

> ごぶさん

どうもはじめまして!nic です。

> WPme2.2.3+DoCoMoで試行してみました。
> 若干修正したらうまくいきました。
ご指摘&動作報告ありがとうございます!

ごぶさんにご指摘いただいた点を修正したスクリプトを wp-mb_mail0.2.2.zip として再 up させていただきました。
どうもありがとうございました!

ごぶ 07-10-07 (日) 17:20

早々の修正ありがとうございます。

これでも動作するのですが、これはDoCoMo(N903i)だけの問題なのかもしれませんが、添付した画像ファイル名称が同じもの(image.jpg)になってしまうようで、続けて投稿すると最後にUPした画像に上書きされてしまいました。
ファイル名を重複しないように変更するようにするにはどうすればいいでしょうか?

nic 07-10-07 (日) 19:09

> ごぶさん

再度のご指摘ありがとうございます!
早速重複しないようプログラム側でアップロードファイル名を指定するよう修正いたしました。

ごぶさんにご指摘いただいた点と img タグの alt 属性を指定できるよう修正したスクリプトを wp-mb_mail0.2.3.zip として再 up させていただきました。
僕は au ユーザーなのでとても助かりマスク!ありがとうございます。

ごぶ 07-10-08 (月) 0:03

またまた修正ありがとうございます。
ちゃんと画像重複することなくDoCoMoで動作しました。

また、なにかありましたらご連絡いたします。

nic 07-10-08 (月) 8:46

> ごぶさん

無事に動作したようでなによりです。
どうもありがとうございましたー!

祐作 07-10-26 (金) 21:34

私もAU携帯を使用しているので、プログラムを使わせていただいております。
しかし、私の携帯からの投稿では画像が添付されているときは投稿できるのですが、本文だけのときは投稿できません。
また、charsetも取得できませんでした。
調べてみると、本文だけのときは$mail->parts[0]では取得できないようです。
strtolower($mail->ctype_primary)でtextの時は
$post_data['post_content'] = mb_convert_encoding($mail->body, mb_internal_encoding(), $mail->ctype_parameters['charset']);
とすると取得できます。

nic 07-10-29 (月) 19:27

> 祐作さん

どうもこんにちは!
ご指摘ありがとうございます!

早速ご指摘頂いた部分を修正したプログラムをアップしました。
画像つきメールの事ばっかり考えてて、画像なしメールの事を忘れていました。だけど僕にとっては二人とも大切なメールだと言うことを、祐作さんに気づかせていただきました。どうもありがとうございます。

祐作 07-11-04 (日) 21:13

プログラムの修正ありがとうございます。
実は同じようなプログラムで、stdinを利用した投稿プログラムを書こうと思っていたのですが、忙しくて手付かずの状態でした。
 便利なプログラムありがとうございます。

nic 07-11-05 (月) 8:48

> 祐作さん
stdin でってことはメールアドレスのエイリアスにスクリプト指定してってことですか?
それだと cron だのなんだの面倒なこともないですね。
もしアレだったら僕の書いたスクリプト適当にいじってエイリアス対応とか作ってもらっても構いませんが、汚いですね僕の書いたコード。

> 便利なプログラムありがとうございます。
いやこちらこそ不具合ご指摘&使っていただいてありがとうございます。

祐作 07-11-05 (月) 9:05

nicさん、そうです。
aliasesを使用するタイプです。
昨晩、試作して動作も確認しています。
.fowardか.procmailrcを使う必要があります。

nic 07-11-05 (月) 11:12

> 祐作さん
自宅サーバないし専用サーバが使えるならそっちのが断然便利ですね。
ローカルパートで投稿するカテゴリを判断させるとか、色々とできることも多そう。

祐作 07-11-13 (火) 21:26

nicさんのコードを利用させてもらって、簡単なSTDIN利用のプログラムを書きました。

nic 07-11-14 (水) 2:11

> 祐作さん
拝見しました!自分の書いたコードをカスタマイズして新たな実装を施してもらえるなんて開発者冥利に尽きます。
どうもありがとうございます。
こうやって世間の荒波にもまれてすばらしいコードになって返ってきてくれるわけですね。
STDIN を利用されたコード、とても勉強になります。
じっくりと読んでさらなる改良の糧とさせていただきます!

fifnel 08-02-13 (水) 11:23

はじめまして、fifnelと申します。
wp-mb_mailでカテゴリとタグの指定が出来るよう改造してみました。
非常に便利なプログラムを公開してくださってありがとうございます。

私自身のサイトで改造バージョンを配布しておりますが、何か問題がございましたらお知らせください。

nic 08-02-14 (木) 11:34

>fifnel さん

はじめまして!
素晴らしい改造を施してくださいましてこちらこそありがとうございます。

基本的に僕が公開しているスクリプトはいじりやすいよう敢えてシンプルに手を加えていない部分が多々あります。
fifnel さんのようにご自身が使われる環境に応じて素敵な改造・改良を施していただけると制作した甲斐があると言うものです。

再配布に関しましては僕が制作した部分については http://creativecommons.org/licenses/by-sa/3.0/deed.ja に準拠していただければ全く問題ありません。

Comment Form
Remember personal info

Trackbacks:2

Trackback URL for this entry
http://spais.jp/wordpress/wordpress-%e3%81%ae%e3%83%9e%e3%83%ab%e3%83%81%e3%83%90%e3%82%a4%e3%83%88%e6%96%87%e5%ad%97%e5%af%be%e5%bf%9c%e3%83%a1%e3%83%bc%e3%83%ab%e6%8a%95%e7%a8%bf3/2007-10-04/trackback
Listed below are links to weblogs that reference
Wordpress のマルチバイト文字対応メール投稿(3) from SPaiS
pingback from WEBあくまこ » Blog Archive » WordPress MUに携帯投稿 08-02-28 (木) 4:13

[...] Wordpress のマルチバイト文字対応メール投稿(3) [...]

pingback from 日々mnagaku» ブログアーカイブ » モブログ 08-04-02 (水) 11:10

[...] で、ググるとwp-mb_mail.phpが見つかった。が、PEAR::Net_POP3を使っていて、うちの環境じゃ動かない。前も自分で使っていて何かあった気がする。名前解決辺りだったか。思い出せないけど。PEAR::Net_POP3は、マニュアルにも 注意 IMAPのような、 ネイティブPHP拡張モジュールと比較した場合、 このクラスの使用法は遅く、不十分な特徴かもしれません。 もし利用可能な場合、 PHP拡張モジュールを使用するように”強く”勧められます。 [...]

Home > Wordpress > Wordpress のマルチバイト文字対応メール投稿(3)

Search
Feeds
Meta

Return to page top