Как я знаю, вы не можете получить доступ ко всему телу (с помощью тэгов почты и 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);
}
}
}
}
Надеюсь, это поможет!
Этот код работает, но печатает много данных заголовка. есть ли способ печати, начиная с тела сообщения? – Vik
Я не знаю никакой магии, чтобы сделать это. Вы сами разбираете контент с помощью манипуляции с строкой Javascript [functions] (http://w3schools.com/jsref/jsref_obj_string.asp), например 'replace()', 'match()' и т. Д. Как я вижу [ здесь] (http://stackoverflow.com/questions/1672144/parsing-email-conversations-with-regular-expressions) для этого вы можете найти полезные регулярные выражения. –
Хорошо, что было бы обходным путем, чтобы вычеркнуть текст и получить желаемые результаты. Мое намерение состояло в том, чтобы узнать, есть ли какой-либо другой метод или способ, который дает только тело – Vik