Thunderbirdアドオンサンプル(右クリックメニューから実行)

ALL
スポンサーリンク

Thunderbird 115以降のアドオンのサンプルです。
メール一覧の右クリックメニューへの項目追加と、それをクリックした際に何か機能するサンプルです。

ここでは、メール一覧の右クリックメニューに項目「From取得」を追加し、それをクリックすると、選択したメールの Fromアドレスをクリップボードにコピーするサンプルを示します。

次のような内容で、manifest.json を作成します。
文字コードは UTF-8 です。

{
  "manifest_version": 2,
  "name": "サンプル拡張機能",
  "version": "1.0",
  "description": "メールの Fromアドレスを取得する拡張機能",
  "permissions": ["menus", "messagesRead"],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "applications": {
    "gecko": {
      "id": "sample@example.com",
      "strict_min_version": "115.0"
    }
  }
}

name が拡張機能の名前、 description が拡張機能の説明です。ここで記述した内容が、アドオンマネージャの画面で次のように表示されます。

permissions で拡張機能のアクセス権を指定します。今回のサンプルでは、右クリックメニューへ項目を追加するので menus を、メールの Fromアドレスを取得するので messagesRead を指定しています。

id の箇所は、他のアドオンと重複のない値を指定します。(サンプルではメールアドレスになっていますが、このアドレスにメールが流れたりはしません)

次に、background.js を作成します。
文字コードは UTF-8 です。

// メニューアイテムを作成
messenger.menus.create({
id: "get-from",
title: "From取得",
contexts: ["message_list"],
});

// メニュー項目がクリックされたときのリスナーを追加
messenger.menus.onClicked.addListener(async ({ selectedMessages }, tab) => {
  // 選択されたメッセージが存在するか確認
  if (tab.mailTab && selectedMessages && selectedMessages.messages.length > 0) {
    // 選択されたメッセージのヘッダを取得
    messenger.messages.getFull(selectedMessages.messages[0].id).then((message) => {
      let headers = message.headers;
      let from = headers.from;
      // クリップボードにコピー
      navigator.clipboard.writeText(from);
    });
  }
});

id で他のメニュー項目と重複の無い名称を指定します。他のメニュー項目がどのようなIDになっているかは確認しづらいので、重複が無さそうな名称を記述するようにしてください。
title でメニューに表示される項目名を指定します。

messenger.menus.onClicked.addListener 内で、上記で記述したメニュー項目がクリックされた際の動作を記述しています。
ここでは、選択したメールの Fromアドレスを取得して、クリップボードにコピーしています。

以上のファイルを作成したら、manifest.json と background.js を zip圧縮し、作成されたファイルの拡張子を zip から xpi に変更します。

これでアドオンは完成です。

Thunderbird へのインストールは、アドオンマネージャの画面で アドオンツールのボタン(歯車アイコン)を押します。
出てきたメニューから「ファイルからアドオンをインストール…」を選択し、先ほど作成した .xpiファイルを指定すればインストールできます。

コメント