投稿通知メールの文字化け問題(解決)
[2004/2/24作成]投稿通知メールって、来たことないなぁ〜と思っていたら、どーやら、本人の投稿には、通知されないようだ。で、別のユーザーでログインしてコメント投稿してみた。一応文字化けの対策は、施したつもりでいたが・・・Nucleus(JP)フォーラムに以下の内容で投稿。
bisonです。先日から色々と試させて頂いています。さて、通知メールが文字化けするというのは、ここかしこで、何度か対処法を目にしておりました。とりあえず、サイケデリックビビアンさんの「メンバー詳細ページからのフォームメールの文字化け回避」にあるhttp://vivian.stripper.jp/index.php?itemid=11action.phpとNOTIFICATION.phpの修正は行ないました。しかし、受信した通知メールの本文は化けてしまうようです。(タイトルは化けない)どのあたりを疑えばよろしいでしょう?
すると、nakahara21さんからの返信で、http://xx.nakahara21.net/item-374.htmlを教えて頂く。ん〜・・・一応、ここで利用しているPHP(Version 4.3.2)は、mb関数がenableなはずなのだけれど・・・
Configure Commandの内容'./configure' '--enable-mbstring' '--with-openssl=/usr/local/ssl' '--with-curl=/usr/local' '--enable-mbregex' '--with-xml' '--with-mcrypt=/usr/local' '--with-apxs=/usr/local/apache/bin/apxs' '--with-mysql=/usr/local/mysql' '--prefix=/usr/local'
同時にnakahara21さんにSuggestion頂いた以下の内容について調査研究してみることにする。
それと、mail通知関係の修正はNucleusファイル内に3箇所あったように記憶しているのですが。このフォーラムで配布している2.5cvsのEUC-JP版ではこの関連のパッチ済ですので、よかったらDLしてソースを調べてみてください。
[以下、2004/03/11追記]新規投稿/コメント投稿の投稿通知メールのみが文字化けするという点から、NOTIFICATION.phpであろうと絞り込む。nakahara21さんご指示のhttp://xx.nakahara21.net/item-374.htmlにあるように、
<?php if (extension_loaded('mbstring')) {@mb_language('ja');@mb_send_mail($address, mb_convert_encoding($title, "iso-2022-jp", "auto"), mb_convert_encoding($message, "iso-2022-jp", "auto") , "From: ". $from);}else{$title = "=?iso-2022-jp?B?" . base64_encode(JcodeConvert($title, 0, 3)). "?=";@mail($address, $title, JcodeConvert($message, 0, 3), "From: ". $from);} ?>
をNOTIFICATION.php上部に挿入。テストの結果、文字化けしてきたメールのヘッダを確認。
<?phpContent-Type: text/plain; charset=ISO-2022-JPContent-Type: text/plain; charset=iso-2022-1?>
ん?なんで、charset宣言が2行あるの?でも、文字化けの仕方が少し変わったぞ。今回のcode挿入前のメールの文字化けは、UTF-8の文字化けっぽかった。念のため、以前の文字化けメールのcharsetを確認。
<?phpContent-Type: text/plain; charset=iso-2022-1Content-Type: text/plain; charset=UTF-8?>
この時点ですでに2行かよ。ということで、NOTIFICATION.phpの
<?php@mb_send_mail($address, $title, $message , "From: ". $from . "nContent-Type: text/plain; charset=iso-2022-1");?>
のcharsetが余計だと・・・で、とりました。
<?php@mb_send_mail($address, $title, $message , "From: ". $from);?>
で、テスト投稿。charsetも
<?phpContent-Type: text/plain; charset=ISO-2022-JP?>
0コメント