過去ログ表示


過去ログ 251 を表示

トピック内全 3 記事中の 1 〜 3 番目を表示
[ 最新記事及び返信フォームをトピックトップへ ]
このトピックの全ページ / [0]

手動でスレッドを変える
(#39603) このトピック中1番目の投稿
(環境: WinXP SP2/IE6)

Thunderbird2.0.0.6使用者です。
スレッド機能は便利でいいのですが
内容が返答であるにもかかわらず、どうしたわけか新規メールを起こして送ってくる人が多く、スレッドにつながらなくてとても読みにくくなっています。

手動で、このメールの後にスレッドをつなげるというようなことは出来ないものでしょうか?

Re[1]: 手動でスレッドを変える
(#39609) このトピック中2番目の投稿
(環境: WinXP SP2/SeaMonkey1.1)

2007/09/08(Sat) 13:32:04 編集(投稿者)

> 内容が返答であるにもかかわらず、どうしたわけか新規メールを起こして送ってくる人が多く、スレッドにつながらなくてとても読みにくくなっています。
> 手動で、このメールの後にスレッドをつなげるというようなことは出来ないものでしょうか?

送るほうがIn-Reply-To:を付けてこないので困っていて何が何でもスレッドの中に入れたい、というのならば、自分の手で無理やり付けてしまう、と。

(0) 作業用のフォルダーを作っておく(WORKとする)
(1) WORK内のメールを全て削除し、Compact Folder(フォルダの最適化)
(2) WORKにIn-Reply-To:の付いていないメールを移動し、念のためにCompact Folder
(3) WORK以外のメールフォルダーを開いてWORKを閉じ、WORKというファイルの書き込みロックをはずさせる
(4) WORKというファイル(WORK.msfではないほう)の中のメールヘッダーの中に、「In-Reply-To: 親メールのMessage-Id」という行を追加
(5) WORKというメールフォルダーを開く
(6) WORKのProperties/Rebuild Indexで、要約ファイルの再構築
(ファイルのサイズが変わるので自動的に再構築されるはずだが、明示的に行うほうが確実)
(7) 元のメールフォルダーに、In-Reply-To:を追加したメールを移動
親メールもIn-Reply-To:を追加したメールも他のメールフォルダーに移動する場合は、
親メール、追加したメール、の順にコピーまたは移動し、Order Receieved(受信順)のカラムの数値が(=ファイルの中のオフセット)、追加したほうが大きくなるようにする(親メールよりも後ろにくる)必要があります。
(親よりも前にあるとスレッドして認識できない、という、すでに報告されているバグがあるため)
(8) 元のメールフォルダーで、Compact Folder

Tb 2.0からRebuild Index(要約ファイルの再構築)ができるようになったので、
POP3(ローカルのメールフォルダー)で電子署名などは絡まないメールならば、
Thunderbirdの起動中にメールのソースを手動で変えてしまう、ということも、注意深く行いさえすれば可能になっています。

より安全を期すには、Thunderbirdを終了してから「In-Reply-To: 親メールのMessage-Id」の行を追加。
失敗するとメールデータそのものを破壊することになるので、メールディレクトリーのバックアップを採っておき、
複数の作業用フォルダーに一つずつメールをいれ、いくつかのメールにIn-Reply-To:を追加する作業をバッチ的に行うほうが利口かも。

(4)の作業は、対象となるファイル内のデータがメールのデータストリームそのものなので、
テキストエディターでも、英文のメールならShift_JISとかwindows-1250あたりの広い文字コード、あるいはISO-2022-JPとして、日本語のメールならばISO-2022-JPとして作業すれば問題はないはずです。
しかし、notepad.exeだとUnicodeとして開いて保存するとUTF-8でもBOMを書く仕様、とか、
テキストエディターによっては元のファイル内の行の改行コードを維持しなくて、
[CRLF]だけでなく[LF]も混ぜているようなメールの時に[LF]が[CRLF]に変わるので、
RFCに違反しているようなメールだとデータが壊れる場合がある、とか、
特殊なケースで問題がでる可能性があります。
従って、簡単なスクリプトやバッチでIn-Reply-To:の行を追加、というほうが安心でしょう。
何行目にこのメッセージIDのものを追加、という指定をしてやるようにすれば、至極簡単なバッチでOK。
PHPだと、行モードの読み込みでも改行コードを除去しないで行のデータを渡すのがデフォールトなので、元の行の改行コードを絶対に変えたくない場合でも行モードの読み込みが使え、バイナリーモードで読み込んで改行文字で分離の手間が省けて、コーディングが少し楽。
// WORKを読み込んでWORK-NEWに書き出す PHPスクリプトの例
$work='...\WORK'; $work_new=$work.'-NEW'; $CRLF="\r\n";
$pos=15; $msg_id='ABC_DEF'; // 16行目に挿入、Message-Id
$hdr='In-Reply-To: '.$msg_id.$CRLF;
$lines=file($work); $handle=fopen($work_new,'wb');
for($ii=0;$ii<count($lines);$ii++){
if($ii==$pos){$rc=fwrite($handle,$hdr);}
$rc=fwrite($handle,$lines[$ii]);
}
$rc=fclose($handle);

IMAPでも基本的には同じなのですが、"Offline Use"のオプション(Offline Mode=オフラインで動かす、ではない)をオンにしたメールフォルダーだと、
(7)でメールを戻す時に、余分な">From - 日付のデータ..."という行を送るので、IMAPサーバーによっては拒否され、拒否されないときにはゴミのメールヘッダーが追加される、というバグに遭遇します。
IMAPの場合には、余計なこと(危険なこと)は避けたほうが無難です。

なお、Rebuild Indexを行ったときに、IMAPでもPOP3でもタグが消失するケースがあります。
http://bugzilla.mozilla.gr.jp/show_bug.cgi?id=5859
日常使用しているメールフォルダーに対して無闇にRebuild Indexをかけるのは、避けるほうが賢明でしょう。

(環境: WinXP SP2/SeaMonkey1.1)

機能の要望自体は2000年にでてますね(POP3だけでなく、IMAPやNNTPも含め全部、で)。
> Bug 36024 ability to customize thread association (mark rcv'd message as reply to arbitrary message)
https://bugzilla.mozilla.org/show_bug.cgi?id=36024
Bugzilla.mozilla.orgに「こんなこといいな、できたらいいな」を書いておくだけなら、誰でもできます。
あとは、その機能をどうしても欲しいと思ってコードを書いて検証して出荷してくれる人が、自分が生きている間に出現するのを待つだけ。


このトピックの全ページ / [0]

返信不可


- Child Tree -