2020年8月30日日曜日

メッセージの取得【MailExtensionsメモ】

Thunderbird 78対応アドオン作成のメモ。

■表示しているメッセージの取得
messageDisplay.getDisplayedMessage() で取得する。

//アクティブなタブを取得して  
let tabs = await browser.tabs.query({
  active: true,
  currentWindow: true
});

//そのタブで表示しているメッセージを取得する
let msg = await browser.messageDisplay.getDisplayedMessage(tabs[0].id);


■選択されているメッセージの取得
mailTabs.getSelectedMessages()で取得する。最大100メッセージしか返さないので、それ以上の場合は、messages.continueList()で、残りを取得する。

//アクティブなタブを取得して  
let tabs = await browser.tabs.query({
  active: true,
  currentWindow: true
});

//そのタブが、3ペインタブだったら、選択しているメッセージを取得する
if (tabs[0].mailTab) {
  let msgs = await browser.mailTabs.getSelectedMessages(tabs[0].id);
  //選択メッセージに何か処理。メッセージは、msgs.messagesに入っている。  

  //残りがある場合は、msgs.idにIDがセットされているので、これがundefinedになるまで繰り返す
  while (msgs.id) {
    msgs = await browser.messages.continueList(msgs.id);
    //選択メッセージに何か処理。メッセージは、msgs.messagesに入っている。

  }
}


■メッセージ全体を取得
mailTabs.getSelectedMessages()等で取得されるオブジェクトは、メッセージの一部の情報しかない。全ヘッダ情報など、他の情報を取るには、messages.getFull()メッセージ全体を読み込まないといけない。読み込み時間が必要なため、大量のメッセージを扱う場合は要注意。

let msg = await browser.messageDisplay.getDisplayedMessage(tabId);
let fullMsg = await messages.getFull(msg.id);

//fullMsg は、Partごとのオブジェクトになっている。


■メッセージのソースを取得
メールのソースそのものを文字列として読み出す。読み込み時間が必要なため、大量のメッセージを扱う場合は要注意。

let msg = await browser.messageDisplay.getDisplayedMessage(tabId);
let fullMsg = await messages.getRaw(msg.id);

0 件のコメント:

人気の投稿(過去7日間)