ホーム > フォーラム > 質問箱 > メール送信時のSubject文字化け

メール送信時のSubject文字化け
投稿者: typista | 投稿日時: 2005/10/28 19:50 | 閲覧: 80294回
typista
お世話なります。
XOOPSのメール送信で、Subjectが文字化けします。
どなたか対処法をご存知の方、ご教授ください。

  設定文字列:[XOOPS]承認が完了しました
  文字化け :[XOOPS]承認が完了しま$ 靴?

コードは、次のように記述し、EUC保存しており、本文(body)は文字化けしません。
---
$xoopsMailer =& getMailer();
$subject = ”[XOOPS]承認が完了しました”;
$xoopsMailer->setSubject( $subject );
$xoopsMailer->send();
---
※以下の文字コード変換もNG(化け方は違います)でした。
 上記の文字化けはmb_convertしてない例です。

$subject = mb_convert_encoding( $subject, "SJIS", "EUC-JP" );
$subject = mb_convert_encoding( $subject, "EUC-JP", "SJIS" );

---
XOOPS 2.0.9.2
PHP Version 4.4.0
です。

コメント(57)

新しいものから | 古いものから | ネスト表示 | RSS feed
Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: sela | 投稿日時: 2005/11/9 20:51
sela
さっき長々と書いたのですが、時間切れで投稿できませんでした。

改めて、大変失礼いたしました。
コメントアウトミスでした!

勘違いして2行だけコメントアウトしたところをを3行にしたところ、全て問題なくいきました。

以下最終的な解決策と解決点を洗いなおしてみると、

解決策:
1.nobunobuさんによる修正版xoopsmailerlocal.phpで上書きする。
2.PopnupBlogのmb_encode_mimeheaderの記述がある部分をコメントアウトする。
具体的には以下の3箇所。(PopnupBlogv2.22の場合)

pop.php(550-552行目)
//	if ( function_exists('mb_encode_mimeheader') )
//		$subj = mb_encode_mimeheader( $subj, PopnupBlogUtils::get_mailcode(), "B" );
//	$xoopsMailer->setSubject($subj);


popnupblog.php(643-645行目)
//		if (function_exists('mb_encode_mimeheader')){
//			$subject = mb_encode_mimeheader($subject, $mailcode, "B");
//		}


PopnupBlogUtils.php(1053-1055行目)
//		if ( function_exists('mb_encode_mimeheader') )
//			$subj = mb_encode_mimeheader( $subj, PopnupBlogUtils::get_mailcode(), "B" );
//		$xoopsMailer->setSubject($subj);


改善点:
1.メールによる投稿→OK
2.ブログからの返信は、件名が空になり送信者にサイト名が全て入っている(件名が空なのは無限ループを防ぐためのモジュール側の仕様です)
3.メーリスへの投稿も大丈夫です。本文の署名のところにほんの一箇所だけ文字化けがありますが、運営上の問題にはならなそうです。

nobunobuさん、そしてdomifaraさん、その他の方々いろいろとお世話になりました。

これが、同じような問題をかかえている人の参考になれば幸いですね。
Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: nobunobu | 投稿日時: 2005/11/9 22:03
nobunobu
何はともあれ、うまく動くようになって安心しました。
引用:

さっき長々と書いたのですが、時間切れで投稿できませんでした。

長文を書かれる場合には、こまめにプレビューボタンにてセッションを継続することを
お奨めします。

とりあえず、PHP4.4.1のバグ1つ

ということで、少しだけ微調整して、正式適用候補版をリリースしました。

[正式適用候補版入手先]
xoopsmailerlocal.php
上記リンクよりファイルをダウンロードして、language/japanese/xoopsmailerlocal.php と置き換えて下さい。

-----------------------
実は、XOOPSコア本体では無いですが、PHP4.4.1がらみで幾つかの不具合が、XOOPSのモジュールで
発生しています。小生の把握している範囲内では

FORMMAIL(フォームメール)の表示が上手くいきません
 TOM_G3Xさんによる、FormMail 及び liaise の動作不良
 対策も同スレッドに書かれています。

Ver.upしたらサムネイルが作成されなくなった? - のぶのぶXOOPS - YYBBS
 XREA.COMのホスティングサービスのように、PHPがsafemodeで動作しているとき、
 PHP4.4.1でGDと呼ばれる画像操作関数で画像ファイルの新規作成が出来ない不具合があり、
 これによって画像の縮小イメージ(サムネール)が作成できない様になりました。
 これについても、WordPress0.5.0RCxにおける対策を上記BBS内に記述してあります。
 おそらく、画像のサムネールを作成する他のモジュールも動作不良になる、
 可能性があります。

以上ご参考まで。
Re: メール送信時のSubject文字化け 
投稿者: mokecchi | 投稿日時: 2005/11/12 18:34
mokecchi
こんにちわ。
先ほど、初めて「ユーザー宛メール」を送信したのですが、タイトルで文字化けを起こしました。

私のXOOPS&PHPのバージョンは次のとおりです。
PHP:4.3.11
XOOPS:2.0.9.2

まだこのスレッドを最後まで読んでいなく、「PHPが4.3.11なら正常」というコメントに反応してレスしましたが、XOOPSが2.0.9.2というところに大きな間違いがあるような気も・・・。

時間がなくてXOOPSのバージョンアップは先延ばしになってしまうのですが、上記環境で文字化けが起こることは考えられるのでしょうか。もし、その答えが「はい」ならば、素直にXOOPSをバージョンアップしますがいつになることやら・・・

とりあえずは、このスレッドを最後まで読んで自己解決できれば、またコメントしたいと思います。
Re: メール送信時のSubject文字化け 
投稿者: mokecchi | 投稿日時: 2005/11/12 18:36
mokecchi
あわわ;
レスつける位置を間違えました。ごめんなさい。
dendekeさんの2005-10-28 23:04の投稿にぶら下げるつもりだったのに。。。
Re: メール送信時のSubject文字化け 
投稿者: mokecchi | 投稿日時: 2005/11/12 18:57
mokecchi
何度もスミマセン。というか、失礼しました。
非常に重要なことを忘れていました。
2.0.9.2云々とか言ってるバヤイではないということを。。。

今から夕飯。そのあと早急にアップグレードします。
・・・アップグレードせずに放置してた自分がアホらしく感じた瞬間でした
Re: メール送信時のSubject文字化け 
投稿者: dendeke | 投稿日時: 2005/11/12 22:50
dendeke
mokecchiさん、こんにちわ。

引用:

レスつける位置を間違えました。ごめんなさい。
dendekeさんの2005-10-28 23:04の投稿にぶら下げるつもりだったのに


ということなので出てまいりました(笑

そうそう、レスつける場所、間違っていませんよ。
このフォーラムでは、レスは常に一番下につくようになっていたと思うので、つけようと思ったスレッドの真下に入らなくても同じトピックにぶら下がっているなら間違っていません。

引用:

先ほど、初めて「ユーザー宛メール」を送信したのですが、タイトルで文字化けを起こしました。

私のXOOPS&PHPのバージョンは次のとおりです。
PHP:4.3.11
XOOPS:2.0.9.2

まだこのスレッドを最後まで読んでいなく、「PHPが4.3.11なら正常」というコメントに反応してレスしましたが、XOOPSが2.0.9.2というところに大きな間違いがあるような気も・・・。


えと、既にXOOPS Cubeの最新版へのバージョンアップはやる(やった?)つもりでいらっしゃるようなので、それはさておき、自分の場合、2.0.9.2でもユーザ宛メールが文字化けしたことはありません。OSとか周辺環境の違いによるのかもしれませんね。
Re: メール送信時のSubject文字化け 
投稿者: tomot1212 | 投稿日時: 2005/11/13 16:28
tomot1212
はじめまして。いつも参考にさせていただいています。

当方、現在Xoopsサイトの試験運用中なのですが、承認キーの自動送信メールが、以下のように文字化けしておりました。

(誤)subject:tomotUんの承認キーです

それが、本スレッドにてnobunobu様にご提供いただいた、xoopsmailerlocal.phpを用いることで、文字化けが解消されました。ありがとうございます。

(正)subject:tomotさんの承認キーです

今回のxoopsmailerlocal.phpは、PHP4.4.X のバグ修正版とのことですが、当方は以下の環境です。

Xoops: 2.0.13a JP
PHP:4.3.11
レンタルサーバ会社:Cside-Net

以上、ご参考までに。今後ともよろしくお願いします。

すみません、このブロックを入れて確認したところ、レンタルサーバのPHP Verは4.4.1にアップデートされておりました。
PHP 4.4.X未満であっても、本スレッドのxoopsmailerlocal.phpが有効な場合がある、と考えて情報をお寄せしましたが、そうではありませんでした。
失礼致しました。
Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: ohwada | 投稿日時: 2005/11/20 11:26
ohwada
知人が ラピッドサイトで XOOPSを運用中です。
17日(木)に、PHP 4.4.1 にバージョンアップされました。

文字化けする問題も発生したが。
nobunobu さんのパッチで治りました。

ご報告とお礼を。

Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: yysuyama | 投稿日時: 2006/4/12 12:35
yysuyama
nobunobuさん、いつもお世話になっております。

CPIのサーバ(PHP 4.4.1)にて全く同様の事象が発生し、本日このパッチをあてたところ、バッチリ解決いたしました。
クライアント様との打ち合わせで、操作中に発覚したので「ドキッ!」としましたが、このスレのおかげで無事解決できました。

大変助かりました。ありがとうございました。
取り急ぎお礼まで。
Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: Guest | 投稿日時: 2006/8/1 21:16
XOOPSを社内でプロジェクト毎に使わせてもらっています。
以前、2.0.13JPをインストールしたとき、Subjectの文字化けでxoopsmailerlocal.phpの暫定パッチにしたところ問題が解消しました。
1ヶ月ちょっと前にインストールした2.0.15JPですが、Subjectの文字化けがまた発生していました。
去年も2.0.13JPを新規インストールしたとき、文字化けが起き、当時既存のプロジェクト用XOOPSの2.0.9JPや2.0.10JP等からアップグレードしようとしましたが、バージョンアップすると不具合することがあるようなのでアップグレードを拒否されてしまいました。
サーバのセキュリティ向上のためにはアップグレードしたかったのですが、反発が大きくそのとき断念しました。

2.0.15JPのリリースノートに文字化け「PHP4.4.0/4.4.1環境におけるメールSubject文字化けへの対処」とありましたが、文字化けが起こりました。そして、2.0.14JPの対策と同様に2.0.13JPのときのパッチ(xoopsmailerlocal.php)にしたところ、文字化けが解消しました。問題なく動くようです。

PHP4.4.0/4.4.1の文字化け対応ということで、当方の環境を確認すると、PHP4.3.3で対象外なのかもしれませんが、暫定パッチで対応していたものが正式版で対応されなくなったのはちょっと残念です。

メール依存度がかなり高いのも困りものですが、情報が載ってその通知がメールで来ることに意義があるという人が多いようで、バージョンアップのたびにメールのサブジェクトが文字化けしているとアップグレードしにくいのが現状です。
この部分がバージョンアップ時に過去の問題が再発しないようになることを期待したいのですが、開発する側の苦労も分かりますし、環境がいろいろだとテストも仕切れないだろうなとも思いますが、うまくいかないものですね。

PHP4.3.3は、もしかしたらセキュリティの関係で対応外ということかもしれませんが、特定のシステムで使っているため勝手にPHPをアップグレードできない状態です。(その特定システムはPHPを含めてメンテナンスしてもらっているので、セキュリティパッチを当てたPHP4.3.3だと思っているのですが...)
Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: nobunobu | 投稿日時: 2006/8/2 15:54
nobunobu
PHP4.3.3でうまくいかないというわけですね。
確かにPHP4のmbstring関連はバージョンによってかなり不安定ではありますが、PHP4のChangeLogを見ても、このあたりのバージョンでそれらしきバグ修正は見あたらないのですが・・・

XOOPS 2.0.15 JP以降の修正では、PHP4.4.0、PHP4.4.1においては、PHPのメールMIME HEADER変換ロジックが誤動作を行う前提で、このバージョンである場合にのみ独自の変換ロジックを適用しています。

で問題の切り分けを行うために2点お教え下さい。

Q1.konkonさんのSubjectの文字化けは、どのような文字化けでしょうか?

a) Subject全体が文字化けしてしまい、全く判別が付かない
b) 短いSubjectは問題ないが、ある一定長さ以上になると途中から文字化けしてしまう。
c) その他

Q2. konkonさんのPHP環境における、mbstring関連の設定を教えて頂けますでしょうか。

Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: Guest | 投稿日時: 2006/8/2 21:26
お世話になります。

> Q1.konkonさんのSubjectの文字化けは、どのような文字化けでしょうか?

c)その他
になります。

管理者でログインし、管理メニューでユーザにメール送信して試してみましたが、件名と本文を「テスト」として送信した結果、
OutlookExpressで表示したときの件名「(J\(B?(J\(B?(J\(B?」、
本文「テスト
※エンコードは、日本語(自動選択)
となりました。
メールのソースを見ると以下のようになってました。


:
:
To: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Subject: =?ISO-2022-JP?B?GyhKXBsoQj8bKEpcGyhCPxsoSlwbKEI/?=
Date: Wed, 2 Aug 2006 17:38:52 +0900
From: XOOPS Site
Message-ID:
X-Priority: 3
X-Mailer: PHPMailer [version 1.73]
X-Mailer: XOOPS Cube
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="iso-2022-jp"
Status:

$B%F%9%H(B



> Q2. konkonさんのPHP環境における、mbstring関連の設定を教えて頂けますでしょうか。

以下のような出力を得ました。

mbstring

Multibyte Support => enabled
Japanese support => enabled
Multibyte (japanese) regex support => enabled

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

Directive => Local Value => Master Value
mbstring.detect_order => no value => no value
mbstring.encoding_translation => Off => Off
mbstring.func_overload => 0 => 0
mbstring.http_input => pass => pass
mbstring.http_output => pass => pass
mbstring.internal_encoding => ISO-8859-1 => no value
mbstring.language => neutral => neutral
mbstring.substitute_character => no value => no value


何か分かりますでしょうか?
Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: nobunobu | 投稿日時: 2006/8/2 22:43
nobunobu
報告ありがとうございます。
どうやら、PHPのmbstring関連の設定不備が原因のようです。
XOOPS Free Wiki - HOWTO/インストール/Linux/3.PHPを参考にしてphp.ini中のmbstring関連設定項目を修正して下さい。
おそらく、php.iniでmbstring関連が全くのデフォルトのままだというのが、文字化けの原因となっています。
PHPのバージョンの問題ではありません。

一応、このあたりもphp.iniでの設定に影響されにくくする様にするなども検討したいと考えています。
Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: Guest | 投稿日時: 2006/8/3 21:00
> どうやら、PHPのmbstring関連の設定不備が原因のようです。

そうだったのですか。
XOOPS2.0.13JPのときの文字化け対策のパッチxoopsmailerlocal.phpだと問題なく動いたので、不具合が再発したかと思いました。

> XOOPS 2.0.15 JP以降の修正では、PHP4.4.0、PHP4.4.1においては、PHPのメールMIME HEADER変換ロジックが誤動作を行う前提で、このバージョンである場合にのみ独自の変換ロジックを適用しています。

ということだったので、xoopsmailerlocal.phpを見てみました。
if (!preg_match('/^4\.4\.[01]([^0-9]+|$)/',PHP_VERSION)) {
という行を見つけたので、試しに
if (!preg_match('/^4\.3\.[013]([^0-9]+|$)/',PHP_VERSION)) {
と変更してメールを出していたところ文字化けしませんでした。
このifのelse部分は、php.iniを変更してなくてもOKのようです。(たぶんそのように作られているのですね。)

php.iniは、他の業務用システムに影響無いかどうかをシステムの開発元確認して、変更可能であれば、変更したいと思います。
また、業務システム開発元にもPHP4.4.Xにならないかも確認してみます。

ありがとうございました。
Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: nobunobu | 投稿日時: 2006/8/4 0:13
nobunobu
konkonさんのように企業である特定用途の為に使われるのであれば、確かにこの様な解決方法もあると思います。
但し、このmbstringの設定が正しくないと場合によって表示の文字化けを生じるモジュールも存在しています。
php.iniの修正のようにすべてのPHPシステムに影響を与えるのではなく、XOOPSの配置ディレクトリ以下に.htaccessを配置してこの中にphpの環境を記述する方法もありますので、こちらもご検討下さい。
Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: Guest | 投稿日時: 2006/8/4 21:13
.htaccessの設定をして試してみました。
xoopsmailerlocal.phpを元に戻してもメールが文字化けしなくなりました。

こちらの設定不十分ですみませんでした。
Re: メール送信時のSubject文字化け[PHP 4.4.x用暫定対応版公開] 
投稿者: hy_at_work | 投稿日時: 2007/1/22 16:29
hy_at_work
PHP4.4.4(XAMPP) + XOOPS CUBE 2.0.16aJP でもメールサブジェクトの文字化けが発生しました。

XOOPSのルーとディレクトリに以下を記述した .htaccess ファイルを置くことで問題が解消できました。
ご報告まで(mbstringとは関係ないのも混じっていますが)。

php_flag register_globals Off
php_flag display_errors On
php_flag file_uploads On
php_value default_charset EUC-JP
php_value mbstring.language Japanese
php_value mbstring.internal_encoding EUC-JP
php_value mbstring.encoding_translation On
php_value mbstring.http_input auto
php_value mbstring.http_output pass
php_value mbstring.detect_order auto

投票(0)

新しいものから | 古いものから | RSS feed
 
To Top