« TrackBack考察(p) | メイン(m) | 行って参りました »(n)

メール文字化け対策

このエントリは内容が古いです。
最新の日本語化パッチを使用するか、こちらのエントリを参考にしてください。
日本語化パッチを適用した人は、こちらの文字化け対策を行う必要はありません。

TrackBackとBookmarkletの文字化け対策は、幸いなことに結構な好評を博し、コメントやらトラックバックやらをたくさん頂きました。
ありがとうございます。

さて、MovableTypeには、コメントやトラックバックがあったときにメールでお知らせする機能があるのですが、日本語の事など全く考えていないMovableTypeさん、EUCでそのままメールを送ってきたりします。
ワタシのBeckyでは文字化けして読めなくて悲しい思いをしていたので、文字化け解消ついでにこっちもなおしましょう。


  1. mt.cgiが存在する場所から見て、 ./lib/MT/Mail.pmを開きます。
  2. 最新の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\"";
以上なのです。 今回は、Shift_JISの人もEUC-JPの人もUTF-8の人もみんなJISにしましょう。メールですから。 例によって非常に強引。ただ、この強引さが許されるのがPerlの良いところ。

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;



« TrackBack考察 | メイン | 行って参りました »

Trackbacks

このエントリーのトラックバックURL:

この一覧は、次のエントリーを参照しています: メール文字化け対策:

» Notification文字化け対策 送信元 talk to oneself 2
 なんつーか、「ビューティフルでワンダフルでトレビアン」な気分だ。TrackBackとBookmarkletの文字化け対策を発表したmilanoさんが、またやってくれた。 Milano::Monolog: メール文字化け対策さて、MovableTypeには、コメントやトラックバックがあったときにメールでお樽.. [詳しくはこちら]

» 通知メールの文字化けも解消 送信元 Going My Way
昨日のヒーローだったMilanoさんがまた偉業を成し遂げた。 Movabletypeの便利な点は新しいコメントやTrackbackがあるとメールで知らせてくれる。だからかなり前の記事にコメントがついてもすぐに発見することができる。(Recent Comment機能をつければある程度便利ですよ)... [詳しくはこちら]

» Movable Type のメール文字化け対策 送信元 dh's memoranda
Milano::Monolog: メール文字化け対策 さて、MovableTypeには、コメントやトラックバックがあったときにメールでお知らせする機能があるのですが、日本語の事など全く考えていないMovableTypeさん、EUCでそのままメールを送ってきたりします。 ワタシのBeckyでは文字化けぎ.. [詳しくはこちら]

» xrea.comへのインストール 送信元 movabletype JapanBlog in Xrea
日本語化インストールhowtoに引用させていただきました。 [詳しくはこちら]

» メールの文字化け 送信元 Clouder::Blogger
MTでコメントなどが投稿されたりするとメールが送られてくるのですが、EUCになってるので文字化けてしまいます。その修正方法を milano さんがその解決法を解説されています。 さっそくソースを変更してみました。 次にメール来るまで効果のほどは確かめません(笑) 楽しみ... [詳しくはこちら]

» メールの文字化け対策。 送信元 salvageship
メールの文字化け対策もtrackback, Bookmarkletの文字化けと同じく修正できるようです。 以下、同じサイトを参照してます。 #参考にさせていただてます。ありがとうございます。 [詳しくはこちら]

» Movable Type文字化け対策 送信元 ARTIFACT -人工事実-
Milano::Monolog: TrackBack文字化け対策 Milano::Monolog: Bookmarklet文字化け対策 Milano::Monolog: メール文字化け対策  Bookmarkletは、現在見ているページへのリンクのHTMLソースを生成して新規投稿ウィンドウが立ち上がるという機能。ネットを見ている最中に気軽ぎ.. [詳しくはこちら]

» *****Movable Type 日本語化***** 送信元 JBA - Japan Blogging Association
(とりあえず)MOVABLE TYPEの日本語化に関するリンクや質問などが集まるスレッド どんどん増えていくことでしょう。(LINK足す時はTrackbackもよろしくー) ■ HOW TO BLOG by POP-SPACE BLOG ■ MOVABLE TYPE しよう by snotch @ m.e.s.h. ■ TrackBack文字化け対策 ... [詳しくはこちら]

» UTFサイトの文字化け対策2 送信元 NetryBlog
MT::App::Trackback.pmの120行目辺り。 require Jcode; $title = Jcode->new($title)->utf8; $excerpt = Jcode->new($excerpt)->utf8; $blog_name = Jcode->new($blog_name)->utf8; no_utf8($tb_id, $title, $excerpt, $url, $blog_name); 一応うまく行ってるみたい。 メ`.. [詳しくはこちら]

» MTのTrackback文字化け対策 送信元 krbys.net
数人の方からTrackBackを頂いているのだが、いかんせん文字化けをしている。対策をMilanoさんのHPにて発見した。ちなみに、現在俺はeuc-jpを使用している。... [詳しくはこちら]

Comments (11)

1

わぁ、Bookmarklet に続いてメールまで。素晴らしすぎます milano さま。私も同様に設定し、もし何か不具合があればご報告します。

2

UTF-8 で設定した Movable Type でも、コメントがついたときに日本語(JIS)のメールが送られてくることを確認しましたので、お知らせします。感謝。

3

すばらしく早いですね。うちでも確認中ですが、うまくいっているようです。Content-type が iso-8859-1 になっておくられてくるので、

$hdrs->{'Content-type'} = "text/plain; charset=\"ISO-2022-JP\"";

も追加したほうがいいでしょうかね。

4

> hirataさん
おっしゃるとおりですね。
Beckyでバケないから忘れてました。
修正しておきました。

5

最初のコードでも先ほど送られてきたTrackbackの文字化けは解消していましたが、一応追加のコードも入れてみました。
メーラーはNetscape mail(Netscape7.0についているもの)
です。

Almailでは最初からタイトル部分は化けてはいませんでした。
今のところうまくいっています。

6

わたしの使用環境は、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をすでに指定されているのですが、受信メールでは概要などが文字化けしています。
解決方法はないでしょうか?
よろしくお願いいたします。

7

>ノネコさん

「文字化けしています」とだけ言われても、こちらでは思い当たることは無いですねぇ。

8

milanoさん、説明不足で申しわけありませんでした。

「コメントやトラックバックがあったときにメールでお知らせする機能」への文字化けは解消しているのですが、「Notification」にメールアドレスを登録して、「エントリーを編集する」の下のほうにある「通知の送信」で概要などを一緒に送るときに文字化けがおこってしまいます。
これへの対応策がありましたらご教授ください。

9

はじめまして。トルコ語と日本語が同居したサイトを作りたくてMovable Typeを使い出しました。UTF-8で構成したのでサイトの方はほぼ問題なく両言語とも使用できているのですが、コメントがついた際の通知メールが文字化けしてしまって困っています。Content-TypeでJISに指定しているからなのか、Jcodeを通しているからどちらにしてもだめなのか、、UTF-8で送るようにする場合の改造ポイントなど教えていただけると幸いです。

10

UTF-8で送るようにするには、ワタシの提示している修正を行わなければオッケーだと思います。

Hussy:
11

こんにちは。
たまたま来た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エンコードする方法ってないものなのでしょうか・・・。

Post a commnet

AMN sponsor rolls


著書

実践Web2.0 BOOK 人気ブロガー直伝! 一歩先行くWeb2.0的ワーキングスタイル
ムーバブル・タイププラグインディレクトリ―PROFESSIONAL NETWORK