MovableTypeではコメントやトラックバックがあるたびに通知メールが指定したメールアドレスに送られます。
で、2.661のときからそれを使ってたんですが…。
3.15にするとちょっと変になり、3.17にすると本格的におかしくなりました。
来たメールのソースを見ると、正常なものはこのようになっている(Ver2.661)のに
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
Subject: [Jellyfish's Nest] =?ISO-2022-JP?B?(略)
=?ISO-2022-JP?B?(略)
From: xxx@xxx.xxx(メールアドレス)
To: xxx@xxx.xxx(メールアドレス)
3.15にした後は以下のようになりメールの件名が途中までしか表示されない上に送信者と宛先が表示されないようになり
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
Subject: [Jellyfish's Nest] =?ISO-2022-JP?B?(略)
=?ISO-2022-JP?B?(略)
=?ISO-2022-JP?B?(略)
From: xxx@xxx.xxx(メールアドレス)
To: xxx@xxx.xxx(メールアドレス)
3.17にすると以下のようになってもはや件名も送信者も宛先も表示されないようになりました。
Content-Type: text/plain; charset="iso-2022-jp"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: [Jellyfish's Nest] =?ISO-2022-JP?B?(略)
=?ISO-2022-JP?B?(略)
=?ISO-2022-JP?B?(略)
From: xxx@xxx.xxx(メールアドレス)
To: xxx@xxx.xxx(メールアドレス)
で、それぞれ見比べてみると、どうやらヘッダーの部分の各行に余計な改行があるとそこから下はヘッダーの中に入れてもらえないことが判明(Subject:の後の行の=?ISO-2022-JP?B?で始まるのは日本語のメール件名)、メールの送信に関連しているのはlib/mt/Mail.pmということなので、その中身を3.15のものと3.17のものを目を皿のようにして見比べてみると
my @Sendmail = qw( /usr/lib/sendmail /usr/sbin/sendmail /usr/ucblib/sendmail );
sub _send_mt_sendmail {
my $class = shift;
my($hdrs, $body, $mgr) = @_;
my $sm_loc;
for my $loc ($mgr->SendMailPath, @Sendmail) {
next unless $loc;
$sm_loc = $loc, last if -x $loc && !-d $loc;
}
return $class->error(MT->translate(
"You do not have a valid path to sendmail on your machine. " .
"Perhaps you should try using SMTP?" ))
unless $sm_loc;
local $SIG{PIPE} = { };
my $pid = open MAIL, '|-';
local $SIG{ALRM} = sub { CORE::exit() };
return unless defined $pid;
if (!$pid) {
exec $sm_loc, "-t" or
return $class->error(MT->translate(
"Exec of sendmail failed: [_1]", "$!" ));
}
for my $key (keys %$hdrs) {
my @arr = ref($hdrs->{$key}) eq 'ARRAY' ?
@{ $hdrs->{$key} } : ($hdrs->{$key});
print MAIL map "$key: $_\r\n", @arr;
}
print MAIL "\r\n";
print MAIL $body;
close MAIL;
1;
}
赤字のところが違う(3.17に「\r」が付いている)のが判明、それを削除してみると、とりあえず3.15の時と同様に「Subject:」の行までは余計な改行がつかないようになりました。
で、後はこちらに基づいて1行コメントアウトするとその下の行も改行がつかなくなり、ようやくちゃんとしたメールが来るようになりました。
コメントを頂いてもメールで通知が来なくなっていたのを修正。
lib/MT/Mail.pmの41行目
「$hdrs->{Subject} =~ s/�r?�n/�r�n/g;」
の行頭に#をつけてコメントアウト↓
「# $hdrs->{Subject} =~ s/�r?�n/�r�n/g;」
これで解決したかな。デフォルトの言語を日本語にしている場合のみの不具合みたいですね・・・。
対策が終わってみると針中野ミュージック - The Sky -: メールヘッダ問題なんとか解決。や針中野ミュージック - The Sky -: メールヘッダ問題、解決したぜェェ for MT 3.17の方で解決されてたんですね…(´・ω・`)
コメント (2)
ShibireKulageさん、はじめまして。
お礼が遅くなってごめんなさい。
TBどうもありがとうございました!
・・・と、お邪魔してみれば、すんごく詳しく書いていらっしゃるー!
わたしはまだ3.17にしていないので、バージョンアップの際には、ぜひ参考にさせて頂きます。
投稿者: rei
|
2005年06月19日 23:07
日時: 2005年06月19日 23:07
いえいえ、お礼なんてとんでもないです。
対応の方、参考にさせていただきました。
3.17の対応の件については、そういう仕様みたいですね。
今後のバージョンについてはどうなるのか…
投稿者: ShibireKulage
|
2005年06月20日 00:32
日時: 2005年06月20日 00:32