Odczytywanie informacji z Thunderbird
Moderator: Pomocy?!
Odczytywanie informacji z Thunderbird
Przeglądarka: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
Czy jest ktoś w stanie napisać np wtyczkę, która po wejściu w daną wiadomość e-mail uruchomi jakiś program zewnętrzny z parametrem tych pól (od, do, temat) ? Z góry dziękuje za odpowiedź.
- mandriospo
- Posty: 12
- Z nami od: 01 kwietnia 2016, 15:56
Odp: Odczytywanie informacji z Thunderbird
Przeglądarka: Mozilla/5.0 (Windows NT 6.0; rv:48.0) Gecko/20100101 Firefox/48.0
- dexter
- Moderator
- Posty: 8327
- Z nami od: 02 października 2004, 21:30
Odp: Odczytywanie informacji z Thunderbird
Przeglądarka: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
- Kod: Zaznacz cały
var indiceMessage = gFolderDisplay.selectedIndices[0];
var msgHdr = gDBView.getMsgHdrAt(indiceMessage);
var subject = msgHdr.mime2DecodedSubject.toString();
var author = msgHdr.mime2DecodedAuthor.toString();
var recipients = msgHdr.mime2DecodedRecipients.toString();
var localFile = Components.classes["@mozilla.org/file/local;1"].
createInstance(Components.interfaces.nsILocalFile);
var process = Components.classes["@mozilla.org/process/util;1"].
createInstance(Components.interfaces.nsIProcess);
var args = [subject, author, recipients];
localFile.initWithPath("C:\\temp\\scripts\\TB\\echo_args.bat");
process.init(localFile);
process.run(false, args, args.length);
- tylko musisz podmienić ścieżkę do programu, który chcesz uruchamiać - i może pobawić się z kodowaniem znaków.
A jeśli chcesz uruchamiać automatycznie dla przychodzących wiadomości, to z kolei można skorzystać z dodatku FiltaQuilla - http://mesquilla.com/extensions/filtaquilla/ (p. pkt.: "Run File").
- Mirek
- Moderator
- Posty: 2156
- Z nami od: 09 sierpnia 2007, 20:37
Odp: Odczytywanie informacji z Thunderbird
Przeglądarka: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
Jeszcze chciałbym zapytać czy jest gdzieś lista metod dla obiektu msgHdr? Chciałbym wyciągnąć trochę więcej informacji jak np "Odp do". Drugie pytanie to czy dało by się ten przycisk zrobić np na szaro (albo żeby zniknął) jeśli żaden e-mail nie jest zaznaczony? (np w sytuacji kiedy zaznacza się folder)
- mandriospo
- Posty: 12
- Z nami od: 01 kwietnia 2016, 15:56
Odp: Odczytywanie informacji z Thunderbird
Przeglądarka: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
- ale w sumie można w google wpisać np.: mime2DecodedRecipients - i też się coś znajdzie.
Tylko tyle, że akurat do nagłówka "Reply-to" trzeba się dobrać trochę inaczej. Pewnie można ładniej - ja na szybko coś takiego skleciłem z kilku kawałków kodu:
- Kod: Zaznacz cały
XPCOMUtils.defineLazyGetter(MailServices, "messenger", function () {
return Cc["@mozilla.org/messenger;1"].createInstance(Ci.nsIMessenger);
});
function msgHdrGetUri (aMsg)
{
return aMsg.folder.getUriForMsg(aMsg);
}
function msgHdrGetHeaders(aMsgHdr, k) {
let uri = msgHdrGetUri(aMsgHdr);
let messageService = MailServices.messenger.messageServiceFromURI(uri);
let fallback = () =>
MsgHdrToMimeMessage(aMsgHdr, null, function (aMsgHdr, aMimeMsg) {
k(aMimeMsg);
}, true, {
partsOnDemand: true,
});
// This is intentionally disabled because there's a bug in Thunderbird that
// renders the supposedly-useful streamHeaders function unusable.
if (false && "streamHeaders" in messageService) {
try {
messageService.streamHeaders(uri, createStreamListener(aRawString => {
let re = /\r?\n\s+/g;
let str = aRawString.replace(re, " ");
let lines = str.split(/\r?\n/);
let obj = {};
for (let line of lines) {
let i = line.indexOf(":");
if (i < 0)
continue;
let k = line.substring(0, i).toLowerCase();
let v = line.substring(i+1).trim();
if (!(k in obj))
obj[k] = [];
obj[k].push(v);
}
k(new HeaderHandler(obj));
}), null, true);
} catch (e) {
fallback();
}
} else {
fallback();
}
}
msgHdrGetHeaders(gFolderDisplay.selectedMessage, function (aHeaders) {
if (aHeaders.has("reply-to"))
alert("Reply-to header: "+aHeaders.get("reply-to")+"\n");
else
alert('No "Reply-to" header');
});
Żeby przycisk zmieniał się w nieaktywny - trzeba dodać jakiegoś listenera w sekcji "Kod inicjacji" - nawet kiedyś coś takiego napisałem, ale nie mogę znaleźć kodu. Pamiętam, że opierałem się o informacje i przykłady z forum Custom Buttons i/lub Custom Buttons² - ale to już sam musisz poczukać - lub spytać na wspomnianym forum.
- Mirek
- Moderator
- Posty: 2156
- Z nami od: 09 sierpnia 2007, 20:37
Odp: Odczytywanie informacji z Thunderbird
Przeglądarka: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
Twój skrypt działa.
Nie mniej jednak jak czekałem tutaj na odpowiedź to napisałem też na forum custom buttons o tym polu reply-to i dostałem kod na dwie linijki, który zwraca pole reply-to.
Może się przyda
http://custombuttons.sourceforge.net/fo ... 788#p11788
- mandriospo
- Posty: 12
- Z nami od: 01 kwietnia 2016, 15:56
Odp: Odczytywanie informacji z Thunderbird
Przeglądarka: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
- Mirek
- Moderator
- Posty: 2156
- Z nami od: 09 sierpnia 2007, 20:37
Odp: Odczytywanie informacji z Thunderbird
Przeglądarka: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36
- mandriospo
- Posty: 12
- Z nami od: 01 kwietnia 2016, 15:56
Odp: Odczytywanie informacji z Thunderbird
Przeglądarka: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
- Mirek
- Moderator
- Posty: 2156
- Z nami od: 09 sierpnia 2007, 20:37
Wróć do Rozszerzenia dla Thunderbirda
Kto jest online
Zarejestrowani użytkownicy: dexter