スクリプトのお勉強

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


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

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

-スクリプトのお勉強

執筆者:

関連記事

yoyo-migrationsを使ってみる

勉強用に、PythonでPostgresqlを制御しようと思います。 その前に、Postgresqlの設定と、マイグレーションをしようかと思います。まずyoyo-migrationsを使用します。 y …

CentOS7 + Django2.2でSQlite3を使用する方法

そのままだとエラーになる 素のCentOS7で、SQLite3を使用して、Djangoアプリを起動すると以下のエラーになります。 File “/opt/webapps/django_upload/.v …

no image

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

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

PythonでPKCS#12を使用して暗号/復号する

1. はじめに 仕事でVPN関係のシステム開発をすることになりました。まずは暗号機能の基本を思い出すため、Pythonで、PKCS#12の公開鍵で暗号、秘密鍵で復号するプログラムを作ってみようと思いま …

seaborn + Pandas + Python によるグラフ描画(その1: 準備編)

グラフ描画してみよう 今現在の仕事で、グラフ描画する可能性があるので、少し練習してみようと思います。 題材について 突然ですが、私は確定拠出型年金に加入しています。証券会社はSBI証券 にしています。 …

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