ContactForm7からのメールが文字化けする時は

   

WordPressにContact Form7を設置して、そのメールをSalesforceのメールtoケースで受け取っている。
Salesforceはアメリカの企業だし、基本的にはUTF-8が標準だ。
日本語でWebサイトをやっていると、文字コードで引っかかる事が多いのだけど、今回は不思議な現象が起きた。

文字化けをするのは一部の文字だけっぽい

不思議とメール文面が全部化けるのではなかった。

何らかの文字が化けており、文字化け以降の文字が削除されたメールが届くようになった。

Salesforceは最近アップデートをしており、そのタイミングと重なったため、Salesforceのせいなのではないか?と思ってサポートに連絡してみたものの、サポートのお兄さんもお手上げになってしまった。

個人的には、文字化けというのは、一度文字化けするとファイル内全てが化ける事が多かったため、一部の文字でエラーが出るという事実をすぐに文字化けをつなげることが出来なかった。

そんな訳で、解決までに物凄く時間がかかってしまったのだけれど、解決してみれば何のことはない、ちょっとした事で修正が完了した。

日本語の文字化けを何とかするには「WP Multibyte Patch」

日本語版にはデフォルトで入っていますね。基本です。

こいつには設定ファイルというものがあるらしく、そいつを設定することでクリアすることが出来ました。

ヒントはこちらのフォーラムです

メールの文字コードを決めているのは Contact Form 7 ではないので、そこを変えたいのであれば Contact Form 7 のコードをいじっても効果がありません。

WordPress のデフォルトでは UTF-8 で送られます。WP Multibyte Patch を使えば ISO-2022-JP で送るように設定してくれると思います。

えっ、と思って思わず調べた結果がここ

http://eastcoder.com/code/wp-multibyte-patch/

設定値を変更する必要がある場合は、wpmp-config-sample-ja.phpwpmp-config.php に変名し内容を編集してから下記のように配置してください。(WP_CONTENT_DIR を変更している場合はその中に置いてください。)

/wp-content/wpmp-config.php

デフォルトのコードを見てみましょう。

/**
* wp_mail() の文字エンコーディング
*
* この設定は WordPress から wp_mail() を通して送信されるメールに適用されます。
* 指定可能な値は、'JIS'、'UTF-8'、'auto' です。
* この設定は $wpmp_conf['patch_wp_mail'] が false の場合は無効となります。
*/
$wpmp_conf['mail_mode'] = 'JIS';

そう、最初はJISになっています。これが曲者でした。

結果的には

$wpmp_conf['mail_mode'] = 'JIS';

$wpmp_conf['mail_mode'] = 'UTF-8';

にしただけで復活しました。UTF-8の箱にJISのメール送るのは危険ですね!!

オススメNginx本

nginx実践入門 (WEB+DB PRESS plus) 単行本(ソフトカバー) – 2016/1/16

nginxを現場で活用するための知識を、実践的なノウハウを交えて解説した書籍です。nginxのインストール方法や基本的な設定方法からはじめ、nginxを利用した「静的コンテンツ配信サーバ」「HTTPSサーバ」「Webアプリケーションサーバ」「大規模コンテンツ配信システム」の構築方法をそれぞれ詳しく紹介しています。後半ではnginxサーバのモニタリングやログの収集、そして軽量スクリプト言語Luaでnginxを拡張する方法について解説しているので、nginxをこれから使う方はもちろん、さらに活用したい方にもお勧めです。

 - Wordpress