分割メール結合アドオンJoinをThunderbird 3.0で

Outlookや、一部のメールユーザクライアントは、メールが一定以上のサイズになると、そのメールを分割して送信する機能を持っている。メールサーバのサイズ制限で大きなメールが送れないときも、この機能を使うことで、送信できるようになるわけだ。しかも、時々我々を困らせる某社独自拡張ではなく、RFC 2046(www.ietf.org)の5.2.2.で定義されており、れっきとした標準仕様である。
だが、困ったことに、Thunderbird君はこの仕様に則ったメールを受け取っても結合する術を持たない。しかも、真っ白な本文に、「attachment」なる一つの添付ファイルだけの内容を示してくるからタチが悪い。そんなに不審なメールに見せたいの?どうしてBug 71189(bugzilla.mozilla.org)を塩漬けにするの?
さて、そこで活躍するのがThunderbirdアドオンJoin(www.c-a-m.co.jp)だ。
このアドオンは、RFC 2046の5.2.2.で定義されているmessage/partial形式の分割メールを結合する機能をThunderbirdに付加してくれる。
使い方は簡単で、届いた同じ分割メールを全て選択し、右クリックから結合するメニュー項目を選ぶだけ。結合が成功すると、同じフォルダに結合後の元のメールが追加される。
しかし、このプラグインMozilla Foundationが満を持して発表したThunderbird 3.0に対応していない。もちろん、Thunderbird 3.0も分割メールに対応していない。なんてこったい……
とは言うものの、今更Thunderbird 2.*には戻りたくない。だって、Glodaが便利すぎるんだもの。
それならば、自分で動くようにするまでだ……と、意気込んでパッチ作ってしまった。

chrome/join.jar/content/join.js:116
		// 選択されているメッセージの、メッセージ URI のリストを取得する
-		var sMsgUriLst = GetSelectedMessages();
+		var sMsgUriLst = gFolderDisplay.selectedMessageUris;

		// メッセージが複数選択されていない場合、中断する

chrome/join.jar/content/join.js:323
		// よく分からない
-		var oResource = GetSelectedFolderResource();
-		var oMsgFolder = oResource.QueryInterface( Components.interfaces.nsIMsgFolder );
+		var oMsgFolder = gFolderDisplay.displayedFolder;
		var oMsgLocalFolder = oMsgFolder.QueryInterface( Components.interfaces.nsIMsgLocalMailFolder );

chrome/join.jar/content/join.js:439
		// そのフォルダのメッセージ数を取得する
-		var oView = window.GetDBView();
+		var oView = gDBView;
		var oFolder = oView.msgFolder;

chrome/join.jar/content/joinOverlay.xul:10
	<script language="JavaScript" src="chrome://messenger/content/addressbook/abMailListDialog.js"/>

-	<popup id="threadPaneContext">
-		<menuseparator />
+	<popup id="mailContext">
		<menuitem id="join" label="&join.label;" accesskey="J" oncommand="Join.Main();" />

install.rdf:7
                   em:id="{3550f703-e582-4d05-9a08-453d09bdfdc6}"
-                   em:minVersion="1.5"
-                   em:maxVersion="2.0.0.*" />
+                   em:minVersion="3.0"
+                   em:maxVersion="3.0.*" />
  <RDF:Description RDF:about="urn:mozilla:install-manifest"

似非diffぽい感じに。
使ってみると、動作は完璧(?)。ちゃんと結合が機能するし、エラーコンソールを見てもエラーらしき項目は一つも見えなかった。
これで、暫く安心してThunderbird 3を使えたらいいなぁ……?

細かいこと

このパッチを作っていて分かったこと。

* GetSelectedMessages()
廃止されました。
gFolderDisplay.selectedMessageUrisを使いましょう。

* GetSelectedFolderResource()
廃止されました。
gFolderDisplay.displayedFolderを使いましょう。

* GetDBView()
廃止されました。
gDBViewを使いましょう。

* threadPaneContext
mailContextに変更されました。

追記

2010/01/18 バージョン縛りの表記が不味かったらしいので修正した。

更に追記

公式で対応されたようだ。やったね!