投稿通知メールの文字化け問題(解決)

[2004/2/24作成]
投稿通知メールって、来たことないなぁ〜
と思っていたら、どーやら、本人の投稿には、通知されないようだ。
で、別のユーザーでログインしてコメント投稿してみた。
一応文字化けの対策は、施したつもりでいたが・・・
Nucleus(JP)フォーラムに以下の内容で投稿。

bisonです。
先日から色々と試させて頂いています。
さて、通知メールが文字化けするというのは、ここかしこで、何度か対処法を目にしておりました。
とりあえず、サイケデリックビビアンさんの
「メンバー詳細ページからのフォームメールの文字化け回避」にある
http://vivian.stripper.jp/index.php?itemid=11
action.phpとNOTIFICATION.phpの修正は行ないました。
しかし、受信した通知メールの本文は化けてしまうようです。
(タイトルは化けない)
どのあたりを疑えばよろしいでしょう?

すると、nakahara21さんからの返信で、


を教えて頂く。
ん〜・・・一応、ここで利用している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($addressmb_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($title03))
"?=";
@mail($address$titleJcodeConvert($message03), "From: "$from);

?>

をNOTIFICATION.php上部に挿入。
テストの結果、文字化けしてきたメールのヘッダを確認。


<?php
Content-Typetext/plaincharset=ISO-2022-JP
Content-Typetext/plaincharset=iso-2022-1
?>

ん?なんで、charset宣言が2行あるの?
でも、文字化けの仕方が少し変わったぞ。
今回のcode挿入前のメールの文字化けは、UTF-8の文字化けっぽかった。
念のため、以前の文字化けメールのcharsetを確認。


<?php
Content-Typetext/plaincharset=iso-2022-1
Content-Typetext/plaincharset=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も


<?php
Content-Typetext/plaincharset=ISO-2022-JP
?>

OK。読めた。
ところが、NOTIFICATION.phpに書いた上記記述は、挿入ではなく、書き換えるらしい。(^^;;
で、最初に参考にさせて頂いた*1タカさん*2から、最初の記述に間違いのあった旨ご連絡頂いた。???が少し氷解したが、あとは、ちゃんとPHPの本買おうっと。

  • 注1まねっこしただけとも言う
  • 注2サイケデリックビビアン

コメント

タイトルとURLをコピーしました