スクリプトのお勉強

Thunderbird プラグインの開発(プラグインでの実現方法)

投稿日:

前回 Thunderbird プラグインの WebExtension版開発方法を調べたので、
開発したいプラグインと、WebExtension版プラグインでの実現方法について書いていきます。

開発するプラグイン

SPAMチェックプラグイン for OCN プロバイダとは

以下の機能を持ったThunderbirdのプラグインを開発しようと思います。

  • メールのヘッダを見て、「迷惑メール」マークを付与するプラグインです。
    • メールのヘッダ(X-OCN-SPAM-CHECK)が100%となっている場合「迷惑メール」マークがつきます。
    • よってメールプロバイダが、OCN以外は意味がありません。
    • ただし、Received-SPF: passになっていたら、「迷惑メール」マークを設定しません。
    • 送信ドメイン認証(SPF)で成功しているということは偽装していないからです。
  • メールを選択したらヘッダチェックを行い、上記条件に合致すれば「迷惑メール」マークを自動的に付与します。
  • オプションで以下の機能があります。
    • 新規「受信」したメールのチェックを行います。(デフォルトOFF)
    • フォルダ選択時に、フォルダ全体にメールチェックを行う(デフォルトOFF)

Thunderbird プラグイン (WebExtension版) 概念図

Thunderbirdのプラグインの概念として、一番わかりやすい図が以下に書かれています。

https://developer.thunderbird.net/add-ons/mailextensions

ほぼこの図だけで全部を説明しきってると言ってもいいぐらいです。これを先に見たかった。。

manifest.json

manifest.jsonとして記述できるキーは以下にあります。

https://developer.thunderbird.net/add-ons/mailextensions/supported-manifest-keys

今回manifest.jsonで使用するキー

今回使用するキーは以下の通りです。主なものだけ書いておきます。

API概要
backgroundJavaScriptファイルを記述すると、処理が開始します。
manifest_versionmanifest.jsonのスキーマバージョンを記述します。今(2021/03/06時点)は2です。
options_uiThunderbirdのアドオン部分に設定用UIを設置します。
permissions使用しているAPIにより必要な権限が決まっています。ここで指定します。
version自プラグインのバージョンを指定します。
applicationsThunderbirdプラグインとしての書き方が決まっています。前回の記事参照。
name自プラグインの名称を書きます。拡張機能の名称として表示されます。

Thunderbird で使用できるAPI

プラグインを開発しようとした当初、ThunderbirdのAPIとして何がどう使えるか分かりませんでした。

Thunderbirdでは、Thunderbird WebExtension API Documentation
に記述されているAPIを使用することが出来ます。

ここに記述されている内容で「Thunderbird API」と書いてあるのは、正確には”browser”オブジェクト内に配置されています。
呼び出す場合は”browser.messages”とすれば使用できます。

ちなみに、「Firefox WebExtension APIs」も使用することが出来ます。storage API等はThunderbirdでも使用できます。

ただし、APIを使用する場合、権限が必要です。manifest.jsonのpermissionsに必要な権限を記述する必要があります。

*Action系APIについて

BrouserAction等の*Actionを使うとどうなるかなどは、以下に書いてあります。

https://developer.thunderbird.net/add-ons/mailextensions/supported-ui-elements

ただし、*Action系は今回は使用しません。

今回使用するAPIについて

今回使用するWebExtensions APIは以下の通りです。

API使用方法
mailTabsメール一覧表示部分に関連するAPIです。メール一覧表示時にメールを選択したり、メール一覧自体を選択した場合のトリガとして使用しています。
messages新規メール受信時のイベントトリガーに使用します。
storage設定取得に使用します。オプション表示で使用しています。

おわりに

今のところのThunderbird WebExtensions版プラグインのとっかかり部分について、記述してみました。


分かってみると、一通りドキュメントは書いてあります。サンプルが少ないですが、、そこらへんは動作させながら確認してみるしかないかもしれません。

次回は実際にプラグインを作成して、公開するところまで行いたいと思います。

-スクリプトのお勉強

執筆者:

関連記事

poetry installでJSONDecodeError

小ネタです。OSをアップデートしたので、その他もいろいろアップデートしようとしたらエラーになったので、メモとして書いておきます。 WSL2のUbuntuを 22.04 LTSにアップデート は、さほど …

Django2.2 でのMySQL5.1対応

「対応」と書きながら、思い切り回避ですが。 マイグレーション時のエラー マイグレーションしたら、以下のエラーになりました。 $ pipenv run python3 manage.py migrate …

gradleのcommandLineでリダイレクト

gradleというビルドツールがあります。なぜかRPMを作成するのに使ってます。Ansibleも使ってるんですがね。。 それはともかく、ここの通りなのですが、例えばls -lRの出力を、プロジェクトデ …

no image

GLP-1 メディカルダイエット 58日目

メディカルダイエットして58日目の記録をしておこうと思います。 9回目。 今回は左腹(中部)に打ちました。痛いのはいまだに慣れない。。 土曜にゲットしてした 渋谷に行ってきたが、そこの医院には相変わら …

Nuxt.jsのFormで入力/確認/完了フォームを作成してみた(その1)

背景 今回は、Webアプリケーションの、フロントエンド系のお話です。ほとんどの場合、バックエンドなのですが、時々フロントエンドもするんですよね。。 私の派遣先では、入力フォームを以下のように分ける要望 …

google オプトアウト Click here to opt-out.