MozillaPL.org - polskie centrum Mozilli

Główne menu:

Odczytywanie informacji z Thunderbird

Dodatki rozszerzające funkcjonalność i schematy wyglądu Mozilli Thunderbird

Moderator: Pomocy?!

Odczytywanie informacji z Thunderbird

Postautor: mandriospo » 01 kwietnia 2016, 16:02

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 istnieje jakieś rozszerzenie lub sposób dzięki któremu można by pobierać informacje na temat wiadomości e-mail, która jest w danym momencie odczytywana? Chodzi mi o wyciągnięcie pola "od", "do", "temat".
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

Postautor: dexter » 01 kwietnia 2016, 19:22

Przeglądarka: Mozilla/5.0 (Windows NT 6.0; rv:48.0) Gecko/20100101 Firefox/48.0

dexter
Moderator
 
Posty: 8319
Z nami od: 02 października 2004, 21:30

Odp: Odczytywanie informacji z Thunderbird

Postautor: Mirek » 02 kwietnia 2016, 00:28

Przeglądarka: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0

Zamiast tworzyć cały dodatek, można skorzystać z istniejącego Custom Buttons i w nim stworzyć odpowiedni przycisk. Kod będzie wyglądał mniej więcej tak:
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

Postautor: mandriospo » 03 kwietnia 2016, 13:36

Przeglądarka: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36

Bardzo dziękuje za odpowiedzi. Mirek, Twój sposób działa świetnie. Jeśli chodzi o FiltaQuilla to ten dodatek znam i używam ale właśnie on jest przeznaczony do przychodzących wiadomości a ja chciałbym popracować nad wiadomościami, które są już w skrzynce.
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

Postautor: Mirek » 04 kwietnia 2016, 22:38

Przeglądarka: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0

Listę metod i atrybutów - ja podejrzałem sobie komendą props(msgHdr) przez Javascript Shell dostępny w dodatku https://addons.mozilla.org/pl/thunderbi ... developer/
- 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

Postautor: mandriospo » 08 kwietnia 2016, 07:42

Przeglądarka: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36

Dziękuje po raz kolejny!
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

Postautor: Mirek » 09 kwietnia 2016, 23:20

Przeglądarka: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0

Rzeczywiście zdecydowanie ładniej i krócej. W sumie nawet tak próbowałem - tylko zamiast "replyTo" wpisałem "Reply-to" - i wtedy niczego nie zwracało.
Mirek
Moderator
 
Posty: 2156
Z nami od: 09 sierpnia 2007, 20:37

Odp: Odczytywanie informacji z Thunderbird

Postautor: mandriospo » 01 czerwca 2019, 12:58

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

@Mirek - czy udało Ci się uruchomić dodatek Custom Buttons w Thunderbird w wersji 60+ ?
mandriospo
 
Posty: 12
Z nami od: 01 kwietnia 2016, 15:56

Odp: Odczytywanie informacji z Thunderbird

Postautor: Mirek » 15 sierpnia 2019, 16:36

Przeglądarka: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0

Nie, nawet nie próbowałem - ale jeśli się da, to jest/będzie to z pewnością opisane na forum dodatku: http://custombuttons.sourceforge.net/forum/index.php
Mirek
Moderator
 
Posty: 2156
Z nami od: 09 sierpnia 2007, 20:37


Wróć do Rozszerzenia dla Thunderbirda

Kto jest online

Zarejestrowani użytkownicy: dexter, Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: