1 Mailアプリケーション

メールプログラムは、メッセージをメールサーバ間で送受信します。 この例では、メールサーバとしてJMSを使用し、メールメッセージはTextMessageです。メールメッセージの送信者および受信者は、メッセージヘッダの文字列プロパティです。

Mailクラスのソースコードは、次のとおりです。

package mail;
                                                                           
import java.util.Date;
                                                                           
import javax.naming.InitialContext;
                                                                           
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.Message;
import javax.jms.TextMessage;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.QueueReceiver;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
                                                                           
/**
   This class ilustrates a very simple mail application, which can
   read and send mail messages.
 */
                                                                           
public class Mail
{
    public static void main(String[] args) throws Exception
    {
    |   // create sender and receiver
    |   InitialContext ctx = new InitialContext();
    |   QueueConnectionFactory factory = (QueueConnectionFactory)
    |       ctx.lookup("queue/connectionFactory");
    |   Queue queue = (Queue) ctx.lookup("queue/queue0");
    |   QueueConnection conn = factory.createQueueConnection();
    |   QueueSession session = conn.createQueueSession(false,
    |       Session.AUTO_ACKNOWLEDGE);
    |   conn.start();
    |                                                                      
    |   // first arg is recipient, second arg is message
    |   if (args.length == 2)
    |   {
    |   |   QueueSender sender = session.createSender(queue);
    |   |   TextMessage msg = session.createTextMessage(args[1]);
    |   |   msg.setStringProperty("sender", System.getProperty("user.name"));
    |   |   msg.setStringProperty("to", args[0]);
    |   |   msg.setStringProperty("date", new Date().toString());
    |   |   sender.send(msg);
    |   }
    |   else
    |   {
    |   |   String selector = "to = '" + System.getProperty("user.name") + "'";
    |   |   QueueReceiver receiver = session.createReceiver(queue, selector);
    |   |   TextMessage msg = (TextMessage) receiver.receive(500);
    |   |   if (msg != null)
    |   |   {
    |   |   |   System.out.println("From: " + msg.getStringProperty("sender"));
    |   |   |   System.out.println("To: " + msg.getStringProperty("to"));
    |   |   |   System.out.println("Date: " + msg.getStringProperty("date"));
    |   |   |   System.out.println("\n" + msg.getText());
    |   |   }
    |   |   else
    |   |   {
    |   |   |   System.out.println("no messages");
    |   |   }
    |   }
    }
}
                                                                           
メッセージを送信するには、プログラムでは次の2つのコマンドラインパラメータが必要です。
  1. 受信者 - メッセージの受信者のユーザ名です。
  2. メッセージ - メールメッセージである簡単なテキスト文字列です。
引数なしで実行すると、プログラムでは現在のユーザがメールメッセージを受信すると想定されます。他のユーザからのメッセージを拒否するため、プログラムにより次のセレクタが設定されます。
"to = '" + System.getProperty("user.name") + "'";
このメッセージセレクタと一致するメッセージがキューに存在する場合、このキューからメッセージを受信して出力します。現在のユーザに対するメッセージがキューにない場合、「no messages」と出力します。

トップに戻る


Copyright © 2000-2003, Novell, Inc.All rights reserved.