Mantisのメール文字化け

Mantisでは、送られてくるメールが文字化けすることが多いです。
Outlook Express、Windowsメール、Gmailなどでは文字化けしませんが、Mozilla Thunderbirdでは文字化けします。

Mantis
[参考記事] Mantisのインストール
[参考記事] Mantisのユーザー管理テーブル(mantis_user_table)

これはメールを送信する際にタイトルと本文を標準の文字コード(だいたいUTF-8)でエンコードしているためで、ともにISO-2022-JPでエンコードするよう変更すると文字化けは解消されます。

core/email_api.phpを修正する。

email_send関数の$mail->CharSetが書かれているあたり(810行)

$mail->CharSet = lang_get( 'charset', lang_get_current() );
$mail->Host     = config_get( 'smtp_host' );

ここを次のように変更する。

//$mail->CharSet = lang_get( 'charset', lang_get_current() );
$mail->CharSet  = 'ISO-2022-JP';
$mail->Encoding = '7bit';
$mail->Host     = config_get( 'smtp_host' );

次に、email_send関数の$t_subjectを書いている最後のあたり(820行)

ここを次のように変更する。

//$mail->Subject = $t_subject;
//$mail->Body = make_lf_crlf( "\n" . $t_message );
mb_language('Japanese');
mb_internal_encoding('UTF-8');
$mail->Subject = mb_encode_mimeheader( $t_subject, 'iso-2022-jp' );
$mail->Body    = make_lf_crlf( "\n" . mb_convert_encoding( $t_message, 'iso-2022-jp' ) );

または、ここに次を追記する。

mb_language('Japanese');
$t_subject = mb_encode_mimeheader( $t_subject, 'ISO-2022-JP', 'B', "\r\n", strlen('Subject: '));
$t_message = mb_convert_encoding( $t_message, 'ISO-2022-JP' );

スポンサーリンク

関連記事

スポンサーリンク

ブラウザの中止ボタンを押した後も処理を実行させる方法 タイムアウト以外の停止

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る