このエントリは内容が古いです。
最新の日本語化パッチを使用するか、こちらのエントリを参考にしてください。
日本語化パッチを適用した人は、こちらの文字化け対策を行う必要はありません。
TrackBackとBookmarkletの文字化け対策は、幸いなことに結構な好評を博し、コメントやらトラックバックやらをたくさん頂きました。
ありがとうございます。
さて、MovableTypeには、コメントやトラックバックがあったときにメールでお知らせする機能があるのですが、日本語の事など全く考えていないMovableTypeさん、EUCでそのままメールを送ってきたりします。
ワタシのBeckyでは文字化けして読めなくて悲しい思いをしていたので、文字化け解消ついでにこっちもなおしましょう。
- mt.cgiが存在する場所から見て、 ./lib/MT/Mail.pmを開きます。
- 最新の2.51だと22行目に以下の4行を加えます。
require Jcode;
$body = Jcode->new($body)->jis;
$hdrs->{Subject} = Jcode->new($hdrs->{Subject})->mime_encode;
$hdrs->{'Content-Type'} = "text/plain; charset=\"ISO-2022-JP\"";
TrackBack/Bookmarklet/Mailの文字化けを解消したので今のところ不便に思っている部分は解決しました。
あまり手を加えすぎるとバージョンアップの時に大変になっちゃうし。
でも、なんか解決して欲しいという要望があったら気が向いたら調べるかもしれません。
上の記述だけじゃわかりにくいかもなので、前後の行も書いておきます。
@{[ MT->version_slug ]}
SIG
my $mgr = MT::ConfigMgr->instance;
my $xfer = $mgr->MailTransfer;
↓
@{[ MT->version_slug ]}
SIG
require Jcode;
$body = Jcode->new($body)->jis;
$hdrs->{Subject} = Jcode->new($hdrs->{Subject})->mime_encode;
$hdrs->{'Content-Type'} = "text/plain; charset=\"ISO-2022-JP\"";
my $mgr = MT::ConfigMgr->instance;
my $xfer = $mgr->MailTransfer;


Comments (11)
わぁ、Bookmarklet に続いてメールまで。素晴らしすぎます milano さま。私も同様に設定し、もし何か不具合があればご報告します。
投稿者: Akihiro | 2002年11月29日 12:47
Posted on: 2002年11月29日 12:47
UTF-8 で設定した Movable Type でも、コメントがついたときに日本語(JIS)のメールが送られてくることを確認しましたので、お知らせします。感謝。
投稿者: Akihiro | 2002年11月29日 16:04
Posted on: 2002年11月29日 16:04
すばらしく早いですね。うちでも確認中ですが、うまくいっているようです。Content-type が iso-8859-1 になっておくられてくるので、
$hdrs->{'Content-type'} = "text/plain; charset=\"ISO-2022-JP\"";
も追加したほうがいいでしょうかね。
投稿者: hirata | 2002年11月29日 16:41
Posted on: 2002年11月29日 16:41
> hirataさん
おっしゃるとおりですね。
Beckyでバケないから忘れてました。
修正しておきました。
投稿者: milano | 2002年11月29日 16:47
Posted on: 2002年11月29日 16:47
最初のコードでも先ほど送られてきたTrackbackの文字化けは解消していましたが、一応追加のコードも入れてみました。
メーラーはNetscape mail(Netscape7.0についているもの)
です。
Almailでは最初からタイトル部分は化けてはいませんでした。
今のところうまくいっています。
投稿者: kengo | 2002年11月29日 18:45
Posted on: 2002年11月29日 18:45
わたしの使用環境は、MT2.64をロリポップのへインストールして使っています。上記の通知メールの文字化けに悩んでいてこのページを教えてもらいました。早速、ご指摘のコードを見たのですが、
require Jcode;
$body = Jcode->new($body)->jis;
$hdrs->{Subject} = Jcode->new($hdrs->{Subject})->mime_encode;
$hdrs->{'Content-Type'} = qq(text/plain; charset="iso-2022-jp");
$hdrs->{'Content-Transfer-Encoding'} = "7bit";
というようにJISをすでに指定されているのですが、受信メールでは概要などが文字化けしています。
解決方法はないでしょうか?
よろしくお願いいたします。
投稿者: ノネコ | 2003年08月27日 10:53
Posted on: 2003年08月27日 10:53
>ノネコさん
「文字化けしています」とだけ言われても、こちらでは思い当たることは無いですねぇ。
投稿者: milano | 2003年08月27日 13:24
Posted on: 2003年08月27日 13:24
milanoさん、説明不足で申しわけありませんでした。
「コメントやトラックバックがあったときにメールでお知らせする機能」への文字化けは解消しているのですが、「Notification」にメールアドレスを登録して、「エントリーを編集する」の下のほうにある「通知の送信」で概要などを一緒に送るときに文字化けがおこってしまいます。
これへの対応策がありましたらご教授ください。
投稿者: ノネコ | 2003年08月28日 17:44
Posted on: 2003年08月28日 17:44
はじめまして。トルコ語と日本語が同居したサイトを作りたくてMovable Typeを使い出しました。UTF-8で構成したのでサイトの方はほぼ問題なく両言語とも使用できているのですが、コメントがついた際の通知メールが文字化けしてしまって困っています。Content-TypeでJISに指定しているからなのか、Jcodeを通しているからどちらにしてもだめなのか、、UTF-8で送るようにする場合の改造ポイントなど教えていただけると幸いです。
投稿者: Hussy | 2003年10月17日 14:56
Posted on: 2003年10月17日 14:56
UTF-8で送るようにするには、ワタシの提示している修正を行わなければオッケーだと思います。
投稿者: milano | 2003年10月20日 00:28
Posted on: 2003年10月20日 00:28
こんにちは。
たまたま来たUTF-8のメールを頼りに下記のように修正したら、一応、Becky2では日本語・トルコ語同居したまま読めるようになりましたのでご報告します。
$body = Jcode->new($body)->utf8;
$hdrs->{Subject} = Jcode->new($hdrs->{Subject})->mime_encode;
$hdrs->{'Content-Type'} = qq(text/plain; charset="utf-8");
$hdrs->{'Content-Transfer-Encoding'} = "8bit";
しかし、SubjectのMIMEはJISのままで本文はUTF-8というねじれた状態なので、サイト名やタイトルにトルコ語特有の文字を使うと化けるという状態のままです。UTF-8でMIMEエンコードする方法ってないものなのでしょうか・・・。
投稿者: Hussy | 2003年10月24日 18:12
Posted on: 2003年10月24日 18:12