Mailist プラグイン仕様

2000.04.2x 作成

2000.06.07 更新
(自動実行プラグイン追加)
2000.07.03 更新
(関数引数追加)

2000.07.25 更新
(プラグイン種別はビットごとのマスク)

  1. 概要
    1. プラグインを置く場所
    2. プラグインリスト作成
    3. 使用するプラグインの記録
    4. バッファ
  2. プラグインの種類
    1. 自動転送用プラグイン
    2. メールエージェントプラグイン
  3. API
    1. GetPluginInfo()
    2. SetPlugin()
  4. プラグイン種固有のAPI
    1. 自動転送用プラグイン
    2. メールエージェントプラグイン
  5. 使用方法サンプル

    自動転送プラグインでは…

  1. 概要
    1. プラグインを置く場所

      Mailistインストールフォルダの下の"PlugIn"フォルダの下。

    2. プラグインリスト作成

      1. Plug-inのあるディレクトリを"*.dll"で検索し、見つかったものを LoadLibrary()でロードする。
      2. GetProcAddress()で GetPlugInInfo() へのポインタを取得する。
      3. GetPlugInInfo() を実行し有効なPlug-inなら、リストに加える。
      4. FreeLibrary()する。
      5. 1.から繰り返し

    3. 使用するプラグインの記録

      • Plug-inファイル名(dll名)とPlug-in名を記録。Plug-in名は補助の役目だけ。
      • Plug-in名が変更されているのを認識したらPlug-in名の記録を書き換える。
      • 記録されたファイル名に対応するPlug-inがないのを認識しても、記録は消さないでそのPlug-inがないメッセージをだすのみ。このとき記録していたPlug-in名も出す。

    4. バッファ

      プラグインは、LocalAlloc()によってMailist本体とのやりとりに必要なバッファ(メモリー)を確保する。
      確保されたバッファは、Mailist本体でLocalFree()によって必ず開放すること。

       

    5. 定義関数のエクスポート

      プラグインDLLで定義した関数は.DEFファイルのEXPORTS文にて、エクスポートすること。

       

  2. プラグインの種類

    1. 自動転送用プラグイン(プラグイン種別:1)

      特定のフォルダに振り分けられたメールを転送する時にメール本文を加工するためのプラグイン。

    2. メールエージェントプラグイン(プラグイン種別:2)

      特定のフォルダに振り分けられたメールに対し、メールの内容を解析し特定の処理をするためのプラグイン。

  3. API

    1. GetPluginInfo() - プラグインに関する情報を得る
      • Prototype:
        extern "C" int WINAPI GetPluginInfo( int infono, LPSTR* lplpBuf )
      • Parameter:
        1. int infono : 取得する情報ID
              PLUGIN_VERSION :Plug-in バージョン - bufには"MailistPlugIn xx"。(xx : Plug-in APIバージョン。今は"01"固定)
              PLUGIN_NAME      :Plug-in 名 - bufにはPlug-in名。
        2. LPSTR* lplpBuf     :(OUT)情報を納めるバッファ(要開放)
      • Return:
        プラグイン種別 (ビットごとのマスクで、CPlugIn::eAutoReply (0x01):自動転送用プラグイン、CPlugIn::eAutoExec (0x02):メールエージェントプラグイン)

    2. SetPlugin() - プラグインの設定ダイアログをだす。
      • Prototype:
        extern "C" int WINAPI SetPlugin( HWND hWnd, MAIL_FOLDER_INFO* lpFolderInfo )
      • Parameter:
        1. hWnd                                         :親ウィンドウハンドル
        2. MAIL_FOLDER_INFO* lpFolderInfo :プラグインを呼んでいるフォルダの情報。
      • Return:
        IDOK         :設定を変更した。
        IDCANCEL :設定を変更しなかった。

  4. プラグイン種固有のAPI

    1. 自動転送用プラグイン

      1. GetMailBody() - メール本文を作成
        • Prototype:
          extern "C" int WINAPI GetMailBody( int infono, LPSTR* lplpBuf, LPCTSTR lpHeader, LPCTSTR lpBody, MAIL_HEADER_INFO* lpMailInfo, MAIL_FOLDER_INFO* lpFolderInfo );
        • Parameter:
          1. int infono : 作成メールの種類
                (MLKIND)eNEW = 1, //新規メール
                (MLKIND)eRET = 2, //全員に返信
                (MLKIND)eRT1 = 3, //差出人に返信
                (MLKIND)eTRS = 4, //転送
          2. LPSTR* lplpBuf: (OUT)メール本文を納めるバッファ(要開放)
          3. LPCTSTR lpHeader : 元のメールのヘッダー
          4. LPCTSTR lpBody : 元のメールの本文
          5. MAIL_HEADER_INFO* lpMailInfo    :元のメールのヘッダー情報
          6. MAIL_FOLDER_INFO* lpFolderInfo :プラグインを呼んでいるフォルダの情報。
        • Return:
          バッファ長。情報がない(エラー)場合 0を返す。0の時は返信・転送処理をやめる。

    2. 自動実行プラグイン

      1. GetMailBody() - メールを解析し、特定の処理を実行。差出人のみに返信もできる。
        • Prototype
          自動転送用プラグインと同じ。
        • Parameter
          自動転送用プラグインと同じ。
        • Return
          バッファ長。差出人への返信が必要でない場合 0を返す。
          0以外の時は、*lplpBufを本文(テンプレート)とした、メールを差出人へ返信する。(処理がされたか、どう処理されたかの確認用に使うことができる。)

  5. 使用方法サンプル (準備中…)

    1. 自動転送プラグイン
    2. メールエージェントプラグイン

  6. インクルードファイル PlugIn.h (2000/07/03更新)