メールを受信したときに何かプログラムを実行させたい場合、Mailetを使用します。
Meilet を作るには、org.apache.mailet.GenericMailet クラスを継承したクラスを作成します。
受け取ったメールの情報がorg.apache.mailet.Mailクラスのオブジェクトとして渡されるので、送信されたメールの内容に応じて処理を記述することが可能です。JAMES_HOME/apps/james.sar の拡張子を zip に変更し、解凍する。
出来たフォルダの /SAR-INF/lib 以下の jar をクラスパスに含めます。
org.apache.mailet.GenericMailet クラスを継承したサンプルプログラム(Hello TestMailet!と表示するだけ)を作成します。
package sample; import javax.mail.MessageingException; import org.apache.mailet.GenericMailet; import org.apache.mailet.mail; public class SampleMailet extends GenericMailet{ public void sevice(Mail arg0)throws MessagingException( System.out.println("Hello TestMailet!"); } }
作成したプログラムを.jarにします。
Eclipse では、パッケージを右クリック → エクスポートから簡単に jar ファイルを作成できます。
作成した jar を JAMES_HOME/apps/james/SAR-INF/lib にコピーします。
JAMES_HOME/apps/james/SAR-INF/config.xml の140行目付近に作成したプログラムのパッケージ名を記述します。
<mailetpackages> <mailetpackage>org.apahe.james.transport.mailets</mailetpackage> <mailetpackage>sample</mailetpackage> </mailetpackages>
次にプログラムを起動する条件を270行目付近に記述します。
<processor name="transport"> <mailet match="UserIs=fujishinko" class="sample.SampleMailet"></mailet>
この記述でユーザ “fujishinko” にメールが届いた場合に処理を実行します。
fujishinko@localhost宛てにメールを送ると・・・
おお、ちゃんとプログラムが実行されています。