[2004/2/24作成]
投稿通知メールって、来たことないなぁ〜
と思っていたら、どーやら、本人の投稿には、通知されないようだ。
で、別のユーザーでログインしてコメント投稿してみた。
一応文字化けの対策は、施したつもりでいたが・・・
Nucleus(JP)フォーラムに以下の内容で投稿。
先日から色々と試させて頂いています。
さて、通知メールが文字化けするというのは、ここかしこで、何度か対処法を目にしておりました。
とりあえず、サイケデリックビビアンさんの
「メンバー詳細ページからのフォームメールの文字化け回避」にある
http://vivian.stripper.jp/index.php?itemid=11
action.phpとNOTIFICATION.phpの修正は行ないました。
しかし、受信した通知メールの本文は化けてしまうようです。
(タイトルは化けない)
どのあたりを疑えばよろしいでしょう?
すると、nakahara21さんからの返信で、
を教えて頂く。
ん〜・・・一応、ここで利用しているPHP(Version 4.3.2)は、mb関数がenableなはずなのだけれど・・・
‘./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頂いた以下の内容について調査研究してみることにする。
このフォーラムで配布している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上部に挿入。
テストの結果、文字化けしてきたメールのヘッダを確認。
<?php
Content-Type: text/plain; charset=ISO-2022-JP
Content-Type: text/plain; charset=iso-2022-1
?>
ん?なんで、charset宣言が2行あるの?
でも、文字化けの仕方が少し変わったぞ。
今回のcode挿入前のメールの文字化けは、UTF-8の文字化けっぽかった。
念のため、以前の文字化けメールのcharsetを確認。
<?php
Content-Type: text/plain; charset=iso-2022-1
Content-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も
<?php
Content-Type: text/plain; charset=ISO-2022-JP
?>
OK。読めた。
ところが、NOTIFICATION.phpに書いた上記記述は、挿入ではなく、書き換えるらしい。(^^;;
で、最初に参考にさせて頂いた*1タカさん*2から、最初の記述に間違いのあった旨ご連絡頂いた。???が少し氷解したが、あとは、ちゃんとPHPの本買おうっと。
コメント