0

私は使用しています

function MsgHdrToMimeMessage(aMsgHdr, aCallbackThis, aCallback,
                             aAllowDownload, aOptions) {

http://mxr.mozilla.org/comm-central/source/mailnews/db/gloda/modules/mimemsg.js#171のメソッドを使用し て、サンダーバード拡張機能を介して選択したメールを読みます。このメソッドは正常に機能しますが、唯一の問題は、メッセージからすべての html を削除してプレーン テキスト メッセージを表示することです。

代わりにメッセージの HTML バージョンを取得するにはどうすればよいですか?

4

1 に答える 1

1

私が知っているように、あなたは全身(メールとhtmlタグで)にアクセスすることはできません. XPCOM スクリプト可能インターフェースnsIMsgDbHdrの機能と属性を持っています。メールを送信するアドオンがあります。次のコード スニペットを使用して、メール本文全体を読みました。ご覧のとおり、ディスクからメール全体を読み取り、その内容を変数にロードしました。また、メール本文全体を読むためにも使用できます。

function SendMailNow(aMsgDBHdr) {
    var aMsgURI = aMsgDBHdr.folder.getUriForMsg(aMsgDBHdr);

    var msgWindow = Components.classes["@mozilla.org/messenger/msgwindow;1"]
            .createInstance();
    msgWindow = msgWindow.QueryInterface(Components.interfaces.nsIMsgWindow);

    var msgStream = Components.classes["@mozilla.org/network/sync-stream-listener;1"]
            .createInstance();
    msgStream = msgStream.QueryInterface(Components.interfaces.nsIInputStream);

    var aMsgService = messenger.messageServiceFromURI(aMsgURI);

    var scriptInputStream = Components.classes["@mozilla.org/scriptableinputstream;1"]
            .createInstance();
    scriptInputStream = scriptInputStream
            .QueryInterface(Components.interfaces.nsIScriptableInputStream);

    scriptInputStream.init(msgStream);

    try {
        aMsgService.streamMessage(aMsgURI, // uri of message to stream
        msgStream, // a stream listener listening to the message
        msgWindow, // a nsIMsgWindow for progress and status feedback
        null, // a nsIUrlListener that is notified when url starts and stops
        false, // it will create a stream converter from message rfc2822 to
        null // Header added to the URI. e.g., header=filter
        );
    } catch (ex) {
    }

    // Creating content
    var content = "";
    while (scriptInputStream.available()) {
        content = content + scriptInputStream.read(512);
        if (content.match(/\r\n\r\n/) || content.match(/\n\n/)) {
            if (sendMail(content, aMsgDBHdr.messageId)) {
                log("SEND_DONE\t" + aMsgDBHdr.messageId + "\t"
                        + aMsgDBHdr.subject);
            } else {
                log("SEND_FAILED\t" + aMsgDBHdr.messageId + "\t"
                        + aMsgDBHdr.subject);
            }
        }
    }
}

これがお役に立てば幸いです!

于 2013-09-30T20:14:47.347 に答える