前回 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 | 概要 |
---|---|
background | JavaScriptファイルを記述すると、処理が開始します。 |
manifest_version | manifest.jsonのスキーマバージョンを記述します。今(2021/03/06時点)は2です。 |
options_ui | Thunderbirdのアドオン部分に設定用UIを設置します。 |
permissions | 使用しているAPIにより必要な権限が決まっています。ここで指定します。 |
version | 自プラグインのバージョンを指定します。 |
applications | Thunderbirdプラグインとしての書き方が決まっています。前回の記事参照。 |
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版プラグインのとっかかり部分について、記述してみました。
分かってみると、一通りドキュメントは書いてあります。サンプルが少ないですが、、そこらへんは動作させながら確認してみるしかないかもしれません。
次回は実際にプラグインを作成して、公開するところまで行いたいと思います。