設定1
$wpmp_conf['patch_wp_mail'] = false;
設定2
$wpmp_conf['patch_wp_mail'] = true;
$wpmp_conf['mail_mode'] = 'UTF-8';
それぞれ試すとどうなりますか?
この問題とは直接関係ないかもしれませんが、使われているバージョンがどれも古すぎます。アップデートできないのでしょうか。
それと、
PHP:4.3.9
MySQL:4.1.22
Wordpress : 3.1.4
Contact Form 7 : 3.0.2.1
Contact Form 7 3.0.2.1 は WordPress 3.2 以降に対応しておりそれ以前のバージョンでは正常に動作しません。最新のバージョンにアップデートされることをお勧めします。
Kuraishi様
お世話になっております。
取り急ぎ、アドバイス頂きました設定1を試しました。
$wpmp_conf['patch_wp_mail'] = false;
については、
/wp-content/plugins/wp-multibyte-patch/ext/ja/config.phpではなく
/wp-content/plugins/wp-multibyte-patch/wpmp-config.php内に設定があったので
そちらをtrueからfalseにし、ファイル更新後、WP Multibyte Patchを停止してから再度有効化し試してみました。
WinXP Pro(SP3) outlookexpressの環境の場所に現在私がおらず、
Win7 Pro(SP1) Windows Live メールの受信環境で試したところ
Google Chromeからの受信では空白ではなく、文字化けした状態で受信しました。
FirefoxからもGoogle Chromeからの受信と同じ状況でした。
ただIEからは正常に受信できてしまいました。
3パターンとも、メールのヘッダーには
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="UTF-8"
とありました。
続いて設定2を試しました。
$wpmp_conf['mail_mode'] = 'UTF-8';
は
/wp-content/plugins/wp-multibyte-patch/ext/ja/config.phpで
$wpmp_conf['patch_wp_mail'] = true;
は
/wp-content/plugins/wp-multibyte-patch/wpmp-config.phpで
設定し、上記と同様ファイル更新後、WP Multibyte Patchを再起動してます。
結果ですが、今度は全て文字化けという結果でした。
メールヘッダーは下記のとおりです。
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
以上となりましたが何か原因が特定できますでしょうか?
Takayuki Miyoshi 様
お世話になっております。
現在動作しているのはお客様の環境でございまして
最新のワードプレス3.4.xには非対応とのことでございました。
反対にWordpress 3.1.4に対応したContact Form 7又はWP Multibyte Patchをダウングレードするという方法はできるのでしょうか?
またそれぞれのプラグインの古いバージョンは入手可能なのでしょうか。
$wpmp_conf['patch_wp_mail'] = true;
$wpmp_conf['mail_mode'] = 'UTF-8';
では
Content-Transfer-Encoding: 7bit
となるはずですので、設定が読み込まれていない可能性が考えられますね。言語設定が define('WPLANG', 'ja');
以外になっているということはありませんか?
お使いの WP Multibyte Patch と WordPress のバージョンはマッチしておりますが、やはりバージョンが古すぎるため、積極的なサポートを行うのは難しいですね。
Kuraishi様
お世話になっております。さっそくのご返信ありがとうございます。
ご指摘の箇所ですが、
define('WPLANG', 'ja');
とはどこにあるファイルでございますでしょうか?
Kuraishi様
上記の件、自分で調べもせずすいませんでした。
Wordpressルートのwp-config.phpですね。
中を確認したら
define('WPLANG', 'ja');
となっておりました。
ちなみにアドバイスを頂戴した『設定2』の状態のままWinXp Pro(SP3)outlookexpressの環境にて同じテストをしたところ、Ch、ff、ieのすべてのブラウザから送信されたメールのヘッダーは
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset=”UTF-8″
になっていました。
この環境での1回目のテストでは
Chは文字化けでNGでしたが、ff、ieでは正常に表示されていました。
時間を空けずに2回目のテストでは
Ch、ff、ieすべて文字がけでNGとなってしまいました。
(ちなみに1回目も2回目もメールヘッダーは同じでした)
こうしてみると同じ設定状態であっても、うまくいく時といかない時があるようです。
ここは解決を断念し、自作でフォームを作成することも含めてクライアントと相談してみます。
上記
Content-Transfer-Encoding: 7bit
となるはずですので、
と書きましたが、Content-Transfer-Encoding: base64
ですね。失礼しました。なので設定は読み込まれているようです。
あと基本的な部分ですが PHP の mbstring の設定は確認されましたでしょうか?
Kuraishi様
お世話になっております。ご返信遅くなりまして大変申し訳ございませんでした。
PHPのmbstringの設定を確認した所、下記の通りでした。
mbstring.language・・・Japanese
mbstring.internal_encoding・・・EUC-JP
mbstring.encoding_translation・・・On
mbstring.func_overload・・・0
mbstring.http_input・・・auto
mbstring.http_output・・・EUC-JP
※Local Value、Master Valueの値は同じ値
languageがJapaneseになっているので問題ないかと思うのですが。。。
mbstring.language・・・Japanese
mbstring.internal_encoding・・・EUC-JP
mbstring.encoding_translation・・・On
mbstring.func_overload・・・0
mbstring.http_input・・・auto
mbstring.http_output・・・EUC-JP
ああ、これが原因でしょうね。念のためデータベースのバックアップを取ってから以下となるように設定を修正して試してみてください。
mbstring.encoding_translation・・・Off
mbstring.http_input・・・pass
mbstring.http_output・・・pass
Kuraishi様
お世話になっております。
PHP.iniの設定変更について、クライアントのサーバー管理者に問合せを行いましたが、
Wordpress以外の他システムも動作しており、設定変更はNGとの事でございました。
WordPressルート以下又はContact Formの該当するファイルにだけ、教えていただいた設定にするということは可能なのでしょうか。