- - PR -
JavaMailでMessageがnullになる
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-20 18:47
はじめまして。
Seasarでメールを受信し、DBに格納するバッチを作成していますが、 下記の処理で、受信フォルダにあるメール総件数は正しく取得できるのですが、 folderからgetMessageした、receiveMessage からgetSubjectすると、 nullになってしまします。送信日時・送信アドレス等も同様に null です。 下記処理を動作確認用に作成したjavaファイル(mainメソッドのみの簡単な)で 実行すると、正しく取得できるのですが・・・ Java自体それそど経験がないので、Seasarが原因なのかどうかも、 さっぱり分かりません。 /** 受信フォルダにあるメール総件数取得 */ totalMessagesCnt = folder.getMessageCount(); /** * 受信メール分ループし、メールを配列に設定する。 */ for (int idx1 = 0; idx1 < totalMessagesCnt; idx1++) { // メール受信 receiveMessage = (Message)folder.getMessage(idx1 + 1); System.out.println(receiveMessage.getSubject()); addArrayList(argTotalMailData, receiveMessage); } よろしくお願い致します。 | ||||
|
投稿日時: 2007-02-20 19:53
getMessage()のJavadocにはmsgnumは「1から」と書いてあります。 初期値を1とするとうまく行くかもしれません。 #当前ながら終端の判定も変えないと最後の一件を見れません。 | ||||
|
投稿日時: 2007-02-20 20:03
あしゅ様、ご指摘ありがとうございます。
folder.getMessageの際に、(idx1 + 1)しておりますので、 「1から」取得しております。 動作確認用では、正しく取得できています。 Seasarでの開発という事で、diconファイルよりDIしており その辺りの原因なのでしょうか? よろしくお願い致します。 | ||||
|
投稿日時: 2007-02-20 20:18
おっと、見落としてました。。 すみません。 でしたら、そこのコードは良さそうです。 原因の切り分けのために、JavaMail部分は全く同じで Seasarを使わないだけのコードで試されてはいかがでしょうか。 | ||||
|
投稿日時: 2007-02-20 21:10
MessageNumberはサーバ側依存で、どんな数字が割り振られていても文句はいえないと思いますが。
現在の通数が100だとして、必ず1〜100で返るとは限りません。 getMessages()で全部取るのはまずいですか? | ||||
|
投稿日時: 2007-02-20 22:25
あしゅ様、mio様ありがとうございます。
getMessages()で全部取ってみたのですが、Message は null でした。 今、デバッグしていて気付いたのですが folder から getMessage した receiveMessage の session が null になっています。 動作確認用javaでは、メールサーバー接続時に作成した session が 入っているのですが・・・ 原因が以下にあるのか分からないのですが、 Seasarに、geronimo-j2ee_1.4_spec-1.0.jar というのが入ってまして、 その中に、javax.mail. と javax.activation. のパッケージがあるのですが、 動作確認用のjavaでは、mail.jar と activation.jar を使用しています。 Seasarに作成しているjavaに、mail.jar と activation.jar を見に行くように する事は可能なのでしょうか? よろしくおねがいします。 | ||||
|
投稿日時: 2007-02-22 12:55
Seasarに含まれている、geronimo-XXXXXXXX.jar の中に、
activation.jar、mail.jarの一部が含まれており、 それが原因で受信が正しく行えないなかった様です。 Eclipse上で、activation.jar、mail.jarの優先順位を geronimo-XXXXXXXX.jarより上にする事により 正常に受信できるようになりました。 ありがとうございました。 |
1