Mailist プラグイン仕様
2000.04.2x 作成
2000.06.07 更新
(自動実行プラグイン追加)
2000.07.03 更新
(関数引数追加)
2000.07.25 更新
(プラグイン種別はビットごとのマスク)
- 概要
- プラグインを置く場所
- プラグインリスト作成
- 使用するプラグインの記録
- バッファ
- プラグインの種類
- 自動転送用プラグイン
- メールエージェントプラグイン
- API
- GetPluginInfo()
- SetPlugin()
- プラグイン種固有のAPI
- 自動転送用プラグイン
- メールエージェントプラグイン
- 使用方法サンプル
自動転送プラグインでは…
- 概要
- プラグインを置く場所
Mailistインストールフォルダの下の"PlugIn"フォルダの下。
- プラグインリスト作成
- Plug-inのあるディレクトリを"*.dll"で検索し、見つかったものを
LoadLibrary()でロードする。
- GetProcAddress()で GetPlugInInfo()
へのポインタを取得する。
- GetPlugInInfo() を実行し有効なPlug-inなら、リストに加える。
- FreeLibrary()する。
- 1.から繰り返し
- 使用するプラグインの記録
- Plug-inファイル名(dll名)とPlug-in名を記録。Plug-in名は補助の役目だけ。
- Plug-in名が変更されているのを認識したらPlug-in名の記録を書き換える。
- 記録されたファイル名に対応するPlug-inがないのを認識しても、記録は消さないでそのPlug-inがないメッセージをだすのみ。このとき記録していたPlug-in名も出す。
- バッファ
プラグインは、LocalAlloc()によってMailist本体とのやりとりに必要なバッファ(メモリー)を確保する。
確保されたバッファは、Mailist本体でLocalFree()によって必ず開放すること。
- 定義関数のエクスポート
プラグインDLLで定義した関数は.DEFファイルのEXPORTS文にて、エクスポートすること。
- プラグインの種類
- 自動転送用プラグイン(プラグイン種別:1)
特定のフォルダに振り分けられたメールを転送する時にメール本文を加工するためのプラグイン。
メールエージェントプラグイン(プラグイン種別:2)
特定のフォルダに振り分けられたメールに対し、メールの内容を解析し特定の処理をするためのプラグイン。
- API
- GetPluginInfo() - プラグインに関する情報を得る
- Prototype:
extern "C" int WINAPI GetPluginInfo( int infono, LPSTR* lplpBuf )
- Parameter:
- int infono : 取得する情報ID
PLUGIN_VERSION :Plug-in バージョン - bufには"MailistPlugIn xx"。(xx : Plug-in APIバージョン。今は"01"固定)
PLUGIN_NAME :Plug-in 名 - bufにはPlug-in名。
- LPSTR* lplpBuf :(OUT)情報を納めるバッファ(要開放)
- Return:
プラグイン種別 (ビットごとのマスクで、CPlugIn::eAutoReply
(0x01):自動転送用プラグイン、CPlugIn::eAutoExec (0x02):メールエージェントプラグイン)
- SetPlugin() - プラグインの設定ダイアログをだす。
- Prototype:
extern "C" int WINAPI SetPlugin( HWND hWnd, MAIL_FOLDER_INFO*
lpFolderInfo )
- Parameter:
- hWnd
:親ウィンドウハンドル
- MAIL_FOLDER_INFO* lpFolderInfo
:プラグインを呼んでいるフォルダの情報。
- Return:
IDOK
:設定を変更した。
IDCANCEL :設定を変更しなかった。
- プラグイン種固有のAPI
- 自動転送用プラグイン
- GetMailBody() - メール本文を作成
- Prototype:
extern "C" int WINAPI GetMailBody( int infono,
LPSTR* lplpBuf, LPCTSTR lpHeader, LPCTSTR lpBody,
MAIL_HEADER_INFO* lpMailInfo, MAIL_FOLDER_INFO* lpFolderInfo );
- Parameter:
-
int infono : 作成メールの種類
(MLKIND)eNEW = 1, //新規メール
(MLKIND)eRET = 2, //全員に返信
(MLKIND)eRT1 = 3, //差出人に返信
(MLKIND)eTRS = 4, //転送
- LPSTR* lplpBuf: (OUT)メール本文を納めるバッファ(要開放)
- LPCTSTR lpHeader : 元のメールのヘッダー
- LPCTSTR lpBody : 元のメールの本文
- MAIL_HEADER_INFO* lpMailInfo :元のメールのヘッダー情報
- MAIL_FOLDER_INFO* lpFolderInfo
:プラグインを呼んでいるフォルダの情報。
- Return:
バッファ長。情報がない(エラー)場合 0を返す。0の時は返信・転送処理をやめる。
- 自動実行プラグイン
- GetMailBody() -
メールを解析し、特定の処理を実行。差出人のみに返信もできる。
- Prototype
自動転送用プラグインと同じ。
- Parameter
自動転送用プラグインと同じ。
- Return
バッファ長。差出人への返信が必要でない場合 0を返す。
0以外の時は、*lplpBufを本文(テンプレート)とした、メールを差出人へ返信する。(処理がされたか、どう処理されたかの確認用に使うことができる。)
- 使用方法サンプル (準備中…)
- 自動転送プラグイン
- メールエージェントプラグイン
- インクルードファイル PlugIn.h (2000/07/03更新)