0

可能であれば助けが必要です。送信中に文字列に追加の StringReference ヘッダーを追加するアドオンを開発しています。

「送信済み」フォルダーに入った後、threadId を収集し (これで問題ありません)、ヘッダーから余分な StringReference を削除します。次のhttp://mdn.beonex.com/en/XPCOM_Interface_Reference/nsIMsgDBHdr.htmlを見つけました:

明確に言えば、既読や返信などのマークを付けるなど、メッセージヘッダーに永続的な変更を加えたい場合は、対応する nsIMsgFolder (msgHdr.folder) または nsIMsgDatabase (msgHdr.folder. msgDatabase)。

しかし、nsIMsgDatabase を取得できないため、実際のコードを作成することはできませんが、実際の msgHdrDb に対してこのオブジェクトを取得できたとしても、特定できないコミット タイプで Commit(type) を呼び出す必要があります。msgHdrDb のメッセージを永続的に変更する方法の例を教えてください。

事前に助けてくれてありがとう!

4

3 に答える 3

1

実際のメッセージではなく、ローカルに保存されたメッセージ ヘッダーのみを変更するため、この方法は機能しないと確信しています。これはローカル フォルダー/POP3 アカウントでは正常に機能しますが、IMAP アカウントでは機能せず、変更は IMAP サーバーに伝達されません。

これについては実際にhttps://groups.google.com/forum/#!topic/mozilla.dev.apps.thunderbird/yWGIYQ8bwfEにスレッドがあります。多くの貴重な情報が含まれており、あなたの質問に答えます。基本的に、メッセージの新しいコピーを作成し、それをフォルダーに挿入する必要があります。そうすることで、ヘッダーを変更できます。要するに、 https: //addons.mozilla.org/thunderbird/addon/header-tools-lite/?src= mozilla.dev.apps.thunderbird (ヘッダー ツール ライト)のソース コードを見てください。彼らがどのようにそれを行うかを見てください。

乾杯、

于 2013-09-27T21:18:52.087 に答える
0

実際には、まさにこれを行うオープンソース パッケージthunderbird-stdlibが開発されています。コードは次のようになります

Components.utils.import("chrome://path/to/thunderbird-stdlib/msgHdrUtils.js")

var msgHdr = ... get the message header ...;
msgHdrsModifyRaw([msgHdr], function(input) {
    // modify the raw input here.
    var modified = input.modify()
    return modified
});
于 2016-05-09T08:01:55.307 に答える