主な機能:
* ISO-2022-JP でメール送信
* トラックバック受信文字が破壊されるバグの修正
* ピンバック受信のマルチバイト対応化
* EXCERPT 系関数のマルチバイト対応化
* 全角スペースで AND 検索
* アドミンエリアの日本語向けフォント調整
上記には日本語特化機能も含まれておりますが、全言語共通の
いくつかの機能は最終的に本体にマージされるべき内容だと考えております。
よろしければ使用時の感想など頂けると助かります。
tenpura
以下、分かる範囲でテストしましたのでお知らせします。
環境:
ホスティング: dreamhost.com
PHP 5.2.2
MySQL 5.0.24a
WordPress 2.3.1
--メール送信--
* ISO-2022-JP(JIS) 7bit の標準的日本語メールを送信するようになる [ja]
→使用しているメールアプリはGmailで表示はUTF-8なのですが、ヘッダがISO-2022-JPになっているのを確認しました。また本文に文字化けはありませんでした。
* PHPMailer により MIME ヘッダが破壊される問題を修正する [ja]
→てっきりMiyoshiさんの「メールの件名の文字化け防止パッチの実証プラグイン※」と同じ機能だと思っていたのですが、違うのでしょうか?有効後も件名の一部文字化けは直りませんでした。
こんな感じです。
『モデレートしてくださ�$: "わーどぷれす"』
※ http://ideasilo.wordpress.com/2007/09/10/demo-4457/
--トラックバック受信とピンバック受信--
バグの再現方法が分からなかったので不明です。
簡単な再現方法がありましたら、テストしますので教えてください。
--EXCERPT 系関数--
* マルチバイト文字列が適切な位置で切断されない問題を修正する
* 出力文字列の長さを設定ファイルからコントロールできるようになる
→両方ともオッケーです!ありがとうございます!
--検索--
* 全角スペースでも AND 検索となる [ja]
* 重複するスペースを取り除く機能を付加 [ja]
→こちらも両方ともオッケーでした。
アドミンエリア
* アドミンページのヘッダ部に独自 CSS コードを出力する機能を付加 [ja]
* 日本語のフォント表示を考慮し上記機能を用いてフォントファミリーを sans-serif 系に統一、一部文字サイズを調整 [ja]
→Macだと気づかなかったんですが、Winだと見やすくなったと感じました。
その他
* 機種依存文字の文字化け対策の強化 [ja]
* 日本語圏以外のユーザー用途にも対応できるようロケール別に拡張クラス(エクステンション)をロードする機能が組み込まれている
→機種依存文字は再現方法が分からないので不明です。
以上です。
Thanks again!
--
Tai
tek...@gmail.com
* PHPMailer により MIME ヘッダが破壊される問題を修正する [ja]
→てっきりMiyoshiさんの「メールの件名の文字化け防止パッチの実証プラグイン※」と同じ機能だと思っていたのですが、違うのでしょうか?有効後も件名の一部文字化けは直りませんでした。
こんな感じです。
『モデレートしてくださ�$: "わーどぷれす"』
> * PHPMailer により MIME ヘッダが破壊される問題を修正する [ja]
> →てっきりMiyoshiさんの「メールの件名の文字化け防止パッチの実証プラグイン※」
> と同じ機能だと思っていたのですが、違うのでしょうか?有効後も件名の一部文字化けは直りませんでした。
> こんな感じです。
> 『モデレートしてくださ?$: "わーどぷれす"』
> ※ http://ideasilo.wordpress.com/2007/09/10/demo-4457/
Miyoshiさんのものとはアプローチがだいぶ異なります。
以下もし可能ならお願いできますでしょうか?すみませんです。
1. Miyoshiさんのプラグインが無効になっていることの確認
2. もし件名のみ化けているのだとしたら以下のソース改変を試す
(mb_encode_mimeheader()にバグがあるPHPのバージョンが存在する為)
/wp-multibyte-patch/ext/default/class.php 97行目の
$phpmailer->Subject = mb_encode_mimeheader($phpmailer->Subject,
'ISO-2022-JP' , 'B', "\r\n");
を
$phpmailer->Subject = $this->encode_mimeheader_b_uncut($phpmailer-
>Subject, 'ISO-2022-JP');
に置き換える
3. 生のメールファイルのソースを送って頂く
(ヘッダ部分のみで良いのですが改行コード、文字コードも含めて確認したい)
> --トラックバック受信とピンバック受信--
> バグの再現方法が分からなかったので不明です。
> 簡単な再現方法がありましたら、テストしますので教えてください。
2.0系を EUC-JP 設定でインストールしてトラックバックとピンバックを打つのがてっとり早いですが
それでも結構面倒だと思いますのでこれは出来たらで構いません。
とりあえず有効化した状態で通常通りトラックバックとピンバックは受信できておりますでしょうか?
---
Miyoshiさん、ありがとうございます。
> demo-4457
同じ hook を使ってますし兼用は駄目ですね。注意事項に付け足しました。
http://eastcoder.com/code/wp-multibyte-patch/
> mb_encode_mimeheader()
バグのあるPHPのバージョンがいくつかあるらしいですね。
やはり自作で分割部分を作った方がいいのかな...
base64エンコードして分割しないという encode_mimeheader_b_uncut() なる
RFC違反承知の関数を使っていますが、念のため説明するとこれは
$phpmailer->FromName が PHPMailer 内部で addslash されるロジックを通って
改行がおかしなことになってしまうからです。
$phpmailer->Subject はそのロジックを通らないので、mb_encode_mimeheader()
を使ってみたのですが、バグのあるサーバーが多いのなら使うのはやめた方が
良いかもしれませんね。XREAのはまた別な問題なのでしょうか。
蛇足ながら XREA 問題は、encode_mimeheader_b_uncut() で解決しそうですね。
Google グループですら一行400文字以上の行のあるヘッダのメールを
送ってきたりしますから少しくらい長くても怒る人はいないと思うんですよ。
tenpura
On 11月10日, 午後12:06, "Takayuki Miyoshi" <takayukis...@gmail.com> wrote:
> すばらしい。
>
> まだ実際に動かす時間がとれないのですが、いまコードをながめてみています。
>
> * PHPMailer により MIME ヘッダが破壊される問題を修正する [ja]
>
>
>
> > →てっきりMiyoshiさんの「メールの件名の文字化け防止パッチの実証プラグイン※」と同じ機能だと思っていたのですが、違うのでしょうか?有効後も件名の一部文字化けは直りませんでした。
> > こんな感じです。
> > 『モデレートしてくださ?$: "わーどぷれす"』
> > 『モデレートしてくださ?$: "わーどぷれす"』
> →機種依存文字は再現方法が分からないので不明です。
①
とか
~
とか
使った文字列の処理で化ける、あるいはマッピングがおかしいことがあったと思います。
再現環境によると思いますので何か気づきましたら教えてください。
tenpura
PHP マニュアル mail
http://jp.php.net/manual/ja/function.mail.php
に改行に関する沢山の情報がありました。
> 注意: メッセージが受信されなかった場合には、LF(\n)のみを使ってみてください。
> Unix の MTA の中には、自動的に LF を CRLF に変換してしまう ものがあります
>(もし CRLF を利用していた場合、CR が重複してしまいます)。
> ただし、これは最後の手段です。というのも、これは ≫ RFC 2822 に違反しているからです。
XREAの問題はこれでしょうか。つまり
\r\n が \r\r\n になってしまうと。
ユーザーのコメントを見ると様々な情報が交錯していて頭が痛いです。
tenpura
Takayuki Miyoshi のメッセージ:
> すばらしい。
>
> まだ実際に動かす時間がとれないのですが、いまコードをながめてみています。
>
> * PHPMailer により MIME ヘッダが破壊される問題を修正する [ja]
> >
> > →てっきりMiyoshiさんの「メールの件名の文字化け防止パッチの実証プラグイン※」と同じ機能だと思っていたのですが、違うのでしょうか?有効後も件名の一部文字化けは直りませんでした。
> > こんな感じです。
> > 『モデレートしてくださ?$: "わーどぷれす"』
> 1. Miyoshiさんのプラグインが無効になっていることの確認
無効になってます :-)。
> 2. もし件名のみ化けているのだとしたら以下のソース改変を試す
> (mb_encode_mimeheader()にバグがあるPHPのバージョンが存在する為)
>
> /wp-multibyte-patch/ext/default/class.php 97行目の
> $phpmailer->Subject = mb_encode_mimeheader($phpmailer->Subject,
> 'ISO-2022-JP' , 'B', "\r\n");
> を
> $phpmailer->Subject = $this->encode_mimeheader_b_uncut($phpmailer-
> >Subject, 'ISO-2022-JP');
> に置き換える
指示通りソースを改変後、文字化けが無くなりました。
ということは、PHPのバグなのですねorz。
> 3. 生のメールファイルのソースを送って頂く
> (ヘッダ部分のみで良いのですが改行コード、文字コードも含めて確認したい)
PHPのバグということが判明したようなのですが、必要であればあらためて直メールしますので、お知らせください。
> 2.0系を EUC-JP 設定でインストールしてトラックバックとピンバックを打つのがてっとり早いですが
> それでも結構面倒だと思いますのでこれは出来たらで構いません。
> とりあえず有効化した状態で通常通りトラックバックとピンバックは受信できておりますでしょうか?
EUC-JP 設定の2.0系はまた今度設置して試してみます。
有効化した状態でのトラックバックとピンバックは正常に受信できました。
Multibyte Patchを有効状態と無効状態にして丸一記号をコメントしてみましたが、
両方の状態とも正常に表示されました。
Macだと丸1記号はエクスクラメーションマークで表示されるようなのですが、
これも両方とも同じように表示されました。
--
Tai
tek...@gmail.com
環境:
PHP/5.2.3
MySQL/5.0.41
2.3.1 WP日本語版
他プラグインは全て無効
Mac OSX 10.4 Firefox 2.0日本語版から、こちらのページの文字をコメント本文にコピペして投稿してみました。
http://ja.wikipedia.org/wiki/利用者:Suisui/機種依存文字テスト
コメント通知メールについて
1. taiさんのおっしゃっていたような件名の文字化けは私の場合、なかったです。
[mywp] モデレートしてください: "Hello world!"
となりました(コード編集なし)。
2. 本文のスクリーンショットをお送りします。
Gmailで一部はきちんと表示されていました(symbols_gmail.png)。
Mac Mailは残念ながらかなり文字化けが…(symbols_macmail.png)。ちなみに、普通に機種依存文字を本文に書いてメール送信した場合は、文字化けしていませんでした。
実際のコメント表示はcomment.pngのとおりです。ほぼきちんと通っているようですが、一部□になってしまったり、機種依存文字が半角英数字に変換されたり(例:
FAX)しているようです。
以上、コメント周辺のみのテスト結果です。
--
*-=-*-=-*-=-*-=-*-=-*-=-*-=-*=-*-=-*
Naoko McCracken
http://nao-net.com/
Skype: nao_detlog
MSN: naokomc...@hotmail.com
> 指示通りソースを改変後、文字化けが無くなりました。
> ということは、PHPのバグなのですねorz。
恐らくPHPのバグか前述のMTAのバグであると思います。
フィードバックを頂いた分のコードは組み込まさせて頂きました。
ありがとうございます。
結果が出ましたのでメールのソースは送って頂く必要はありません。
Naoさん
マックの機種依存文字情報非常に役に立ちました。
ISO-2022-JP-MSというMS拡張のJISで全部まかなえるかと思ったら甘かったですね。
おかげで色々勉強になりました。
メール部分を大幅に作り変えたものをアップしましたのでよろしかったら
お時間がある時にまた試してみてください。
http://eastcoder.com/code/wp-multibyte-patch/
tenpura