サンプル・メールハンドラ
メールハンドラサンプル
メールを受信して、内容をファイルに保存する例
以下のコードを作成し、クラスファイルをDurianが参照できるクラスパス上に配置します。
その後、作成したクラスをDurian管理ツールから登録します。
package samples.mail;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import javax.mail.MessagingException;
import jp.co.symmetric.durian.mail.MailAddress;
import jp.co.symmetric.durian.mail.MailHandler;
import jp.co.symmetric.durian.mail.MailMessage;
/**
* メールを受信した際にメールの
* [件名]、[本文]、[From]、[To]、[CC]
* をローカルファイルに保存し、差出人に受信した旨の返信メールを送信する
* メールハンドラのサンプルクラスです
*/
public class SampleMailHandler implements MailHandler {
/**
* 登録されたメールアドレス宛にメールが届いた際に呼び出されるメソッドです
* @param message メールアドレスを表すクラス
*/
public void mailReceived(MailMessage message) throws MessagingException {
// 件名
String subject = message.getSubject();
// 本文
String body = message.getBodyText();
// 送信元メールアドレス
MailAddress from = message.getFrom();
// 送信先メールアドレス(メールハンドラの設定アドレス)
MailAddress to = message.getTo();
// CCメールアドレス
MailAddress cc = message.getCc();
// ファイルに保存
try {
store(subject, body, from, to, cc);
} catch (IOException e) {
e.printStackTrace();
}
// 返信メッセージを作成
MailMessage reply = message.reply();
// 宛先にFromメールアドレス設定
reply.setTo(from);
// 差出人にToメールアドレスを設定
reply.setFrom(to);
// 件名を設定
reply.setSubject("メールを受信しました");
// 本文を設定
reply.setBodyText("メールハンドラが受け取りました。\r\nありがとうございました。");
// 送信
reply.send();
}
/**
* 受け取ったメールの内容ををファイルに保存します
* @param subject
* @param body
* @param from
* @param to
* @param cc
* @throws IOException
*/
private void store(String subject, String body,
MailAddress from, MailAddress to, MailAddress cc) throws IOException {
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("receivedMail.list", true), "Windows-31J");
try {
StringBuffer sb = new StringBuffer();
sb.append("------------------------------------------------\r\n");
sb.append("From : " + from.getAddress() + "\r\n");
sb.append("To : " + to.getAddress() + "\r\n");
sb.append("Subject : " + subject + "\r\n");
sb.append(body + "\r\n");
sb.append("------------------------------------------------\r\n");
out.write(sb.toString());
} finally {
out.close();
}
}
}

