msgbartop
台湾のアレゲな大学生活を淡々と書き綴るウェブログ
Twitter 最新のツイート : 「 明日は朝一でプールいってきます 12 hrs ago
msgbarbottom

12 12月 08 NOKIA E51 からのメールを Ktai Entry で正常に投稿させる修正

<使用環境>
サーバ:CORESERVER
WordPress 2.6.5
Ktai Entry 0.8.8
携帯電話:NOKIA E51
キャリア:台灣大哥大(台湾の携帯電話会社)

Nokia E51の付属メーラーからメールを送った場合にKtai Entryで正常に投稿できない事があります。

WordPressフォーラムでプラグインの作者に問い合わせ、調査したところ、送信するメーラーのエンコード・文字列の問題だと判明。

そして、プラグインで使用する付属のmimeDecode.phpにバグを発見しました。

プラグインに付属しているとは言え、サーバ側にmimeDecodeがインストールされていると、そのmimeDecodeが優先されるため、サーバ毎に動作の可不可が左右されるのは完全ではない。

そんな訳で、Ktai Entryのpost.phpを修正して対応する事にしました。

<post.php>
399行目付近

private function decode_message($message) {
//ココから↓
	if (preg_match('!^Content-Type: multipart/mixed;.*?boundary="?(.*?)"?$!ims', $message, $boundary, PREG_OFFSET_CAPTURE) && preg_match("/'/", $boundary[1][0])) {
		$new_boundary = preg_replace('/[^0-9a-zA-Z+.-]/', '_',  $boundary[1][0]); // fix for EPOC Email (Nokia build-in)
		$message = substr_replace($message, $new_boundary, $boundary[1][1], strlen($new_boundary));
		$message = preg_replace('/^--' . preg_quote($boundary[1][0], '/') . '(--)?$/m', '--' . $new_boundary . '$1', $message);
	}
//ココまで↑の範囲を追記します
	$params['include_bodies'] = true;
	$params['decode_bodies']  = true;
	$params['decode_headers'] = false;
	$params['input'] = $message;
	$structure = Mail_mimeDecode::decode($params);
	return $structure;
}

以上の内容で保存しアップロードします。

※Ktai Entry 0.9.0以降のバージョンでは標準で対応するようですので、0.9.0以上の方は気にする事はないと思います

Reader's Comments

  1. |

    テスト投稿、どれもOK

    また本日コメントくださったカーキさんのブログ「かーきの日誌。」に書かれていたように、Ktai Entryのpost.phpを修正した。その後、あれこれデバイスを替えてテスト投稿したら、いずれも…

  2. |

    [...] Nokia 製端末での不具合は、フォーラムに投稿された報告をもとに修正したもので、すでにかーきさんがウェブで公開された内容を、より厳密にした (シングルクォートだけいじるようにした) ものです。 [...]

Leave a Comment