Durian

サンプル・メールハンドラ

メールハンドラサンプル

メールを受信して、内容をファイルに保存する例

以下のコードを作成し、クラスファイルを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();
		}
	}
}
Durian® is a registered trademark of Symmetric Co., Ltd.

© 2006- All Rights Reserved Symmetric Co., Ltd.