メールを受信したときに何かプログラムを実行させたい場合、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宛てにメールを送ると・・・

おお、ちゃんとプログラムが実行されています。