サンプル・メールハンドラ
メールハンドラサンプル
メールを受信して、内容をファイルに保存する例
以下のコードを作成し、クラスファイルを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(); } } }