スクリプトのお勉強

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版プラグインのとっかかり部分について、記述してみました。


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

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

-スクリプトのお勉強

執筆者:

関連記事

Djangoアプリサンプル – 画像ファイルアップロード + 顔モザイク(画像アップロード編)

仕事で使用している、Djangoについて、サンプルを作成してみようと思います。ここでは、画像ファイルのアップロードと顔モザイクを行うwebアプリを作成してみようと思います。 この記事ではファイルアップ …

小ネタ: Python のdataclass でNone or “”を使わないJSONデータを定義する

PythonをREST APIのクライアントとして作成する際、dataclassesを使用しようと思いました。型が見た瞬間分かるし、しっかりしているからです。 でも、そのREST API は&#822 …

VMware player(workstation) から WSL2に乗り換える

いままで、VMware player(今のVMWare Workstation Player)上で、作って確認していたけど、いちいち起動するのがだるいです。 ついでにやたらとリソースを使用するので、こ …

WSL2のubuntu 22.04 LTSを24.04 LTSにアップデート

WSL2 24.04LTS アップデート

Python3 – django-webtest

忙しいので断片だけ。。 DjangoでWebブラウザからアクセスする感じでテストする、やり方の一つです。以前にやったように、 Seleniumからやってもいいのすが、そこまでじゃない場合の単体テスト方 …

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