分割メール結合アドオン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 バージョン縛りの表記が不味かったらしいので修正した。
更に追記
公式で対応されたようだ。やったね!