スクリプトのお勉強

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


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

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

-スクリプトのお勉強

執筆者:

関連記事

Pythonからsvnしてみる

SVN: レガシーシステムの一つ。。 私の関わってるシステムでは、いまだにsvnレポジトリがあります。pythonで処理する必要性が生じましたが、そういえばどう処理していいもんか、完全に忘れました。 …

(小ネタ) Reflex (Python) にてタブ形式のlinkを設定する

小ネタですが書いておきます。 Reflex とは、は割愛 前回に書いたので割愛します。 使い始めてみた 感想は後日、ということで 本題、タブ形式のlinkメニュー たいていのUIコンポーネントにはタブ …

poetry installでJSONDecodeError

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

CentOS7 + Django2.2 + uwsgi + nginx 連携方法

Djangoとnginx連携方法 以前はApache経由で連携しましたが、今回はnginxと連携する方法を記述します。 環境 設定した環境は以下です。 OS: CentOS7Python3.6.8 ( …

JSON/YAMLファイル読み込み用ライブラリ比較(Python3)

はじめに Python3でプログラムを作る際、YAML/JSONを読みだす処理を多く作成します。そうすると、データが長く、そして複雑になる時があります。 ネストしてるデータを読みだすと以下のように a …

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