JavaMailの受信処理で問題発生!メール受信後にメールが残ってしまう

このQ&Aのポイント
  • JavaMailを使用してメールの送受信ができるようにしましたが、メール受信時に問題が発生しています。受信したメールをメールサーバから取得した後、そのメールをメールサーバに残したままにしてしまうため、同じメールが再度受信されてしまいます。
  • メール受信ソースを確認すると、メールサーバーに接続し、受信したメールの件数や内容を取得しています。しかし、メールを受信した後にメールサーバから削除する方法がわからず困っています。解決策を教えていただけないでしょうか?
  • 使用しているバージョンはJDK1.3で、javamail-1_2.zipとjaf1_0_1.zipをダウンロードして使用しています。
回答を見る
  • ベストアンサー

JavaMailの受信処理で質問

ヤマトです。 JavaMailを使用してメールの送受信ができるようにしました。 メールの送信も受信も基本的には問題なく動作します。 しかし、一点問題がありまして、メール受信時なのですが、受信したメールをメールサーバから取得した後、 そのメールをメールサーバに残したままにしてしまいます。 (なのでもう一度実行すると同じメールを受信してしまいます) 受信した後メールサーバから削除したいのですが、調べたのですが、分かりません。 どなたか、以上の件に関し、ご教授願えますでしょうか? 以下に、作成したメール受信のソースを載せます。 javamail-1_2.zip とjaf1_0_1.zip をダウンロードして使用しています。JDK1.3です。 宜しくお願い致します。 == メール受信ソース(一部抜粋) // メールサーバーへ接続 Session session = Session.getDefaultInstance(System.getProperties(), null); Store store = session.getStore("pop3"); store.connect(PopServerAddress, -1, MailUser, MailPassword); // メールサーバのフォルダーを開く Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); // フォルダーのメール件数を取得 int totalMessages = folder.getMessageCount(); if (totalMessages == 0) { System.out.println("メールは0件です"); folder.close(false); store.close(); return; } // フォルダーのメールを取得 Message[] messages = folder.getMessages(); // フォルダーを閉じます folder.close(false); store.close();

  • Java
  • 回答数1
  • ありがとう数9

質問者が選んだベストアンサー

  • ベストアンサー
  • kero-pi
  • ベストアンサー率66% (2/3)
回答No.1

kero-piです。 たしか、こんな感じでできたと思います。。。 Message[] messages = folder.getMessages(); for(int i=0;i<messages.length;i++){ // メールに削除フラグをたてる messages[i].setFlag(Flags.Flag.DELETED, true); } folder.close(false); store.close();

jyamato
質問者

お礼

kero-piさん。ありがとうございます。 できました。 おまけに、メッセージフォルダのOPENをREAD ONLYに してました^^); READ WRITEにしてできました。

関連するQ&A

  • [JavaMail]Javamailでの差出人の自動取得について

    [JavaMail]Javamailでの差出人の自動取得について こんにちは。質問させていただきます。 Android環境 + javamailでメーラーアプリを作成しています。 メール送信時にFrom(差出人)アドレスをサーバから自動取得したいと 考えているのですが、どうもうまくいきません。 Javamailのリファレンスには、 InternetAddress#getLocalAddress(Session); で、取得できると記載がありますが、Nullが返ってきます。 他の手段でメールサーバから差出人(ユーザ)のアドレスを取得する方法はないでしょうか? ご存知の方がおられましたら教えていただければと思います。 メールサーバは現在「mopera.net」のみを想定しております。 よろしくお願い致します。

  • javamailについて

    javamailで定期的にサーバからメールを受信したいんですが、webで調べましたら初心者にはちょっとわかりにくい説明がされていて僕にはわからないです。 何に対して、どういうことをして、どうすればしたいことができるのかが伝わりにくいです。 わかりやすく説明されているページやわかりやすく説明してくださる方、どうかご回答お願いします。

    • ベストアンサー
    • Java
  • JavaMailでのメール送信

    JavaMail でメールを送信しようとしていますが、うまく送信できません。 SMTPサーバはユーザ認証とPOP before SMTP です。 コードの一部を抜粋しますと Session session = Session.getDefaultInstance(props, null); Store store = session.getStore("pop3"); store.connect(host, user, pass); MimeMessage message = new MimeMessage(session); --途中省略-- Transport transport = session.getTransport("smtp"); transport.connect(null, user, pass); transport.sendMessage(message, message.getAllRecipients()); となっています。一番下の行で以下のエラーが出ます。 javax.mail.MessagingException: Could not connect to SMTP host: ***.***.***.***, port: 25; nested exception is: java.net.SocketException: Software caused connection abort: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1213) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:311) at javax.mail.Service.connect(Service.java:233) at javax.mail.Service.connect(Service.java:134) at SendMail.sendMessage(SendMail.java:346) at SendMail.main(SendMail.java:162) Java初心者ですが、どうかよろしくお願いいたします。

  • [Android+Javamail]送信できません

     こんにちは  Javamailを使ってAndroid用メールアプリの開発を志しているものです。  以下のサイトを参考にさせてもらってコードを作ってエミュレーターで動かしてみました。 http://yamato-iphone.blogspot.jp/2011/12/javamail.html http://d.hatena.ne.jp/ttshrk/20110517/1305641955 http://yaim.blogzine.jp/ability/2012/04/javamail_androi.html  ところが、下記のようなエラーで、メール送信ができませんでした。 12-23 10:56:36.225: W/System.err(541): javax.mail.MessagingException: Could not connect to SMTP host: smtp.hogehoge.jp, port: 587; 12-23 10:56:36.225: W/System.err(541): nested exception is: 12-23 10:56:36.235: W/System.err(541): javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x199c48: Failure in SSL library, usually a protocol error 12-23 10:56:36.235: W/System.err(541): error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:683 0x401e0c93:0x00000000)  また、 12-23 10:56:35.385: I/System.out(541): DEBUG: not loading file: /system/lib/javamail.providers 12-23 10:56:35.385: I/System.out(541): DEBUG: java.io.FileNotFoundException: /system/lib/javamail.providers: open failed: ENOENT (No such file or directory)  このようなログも吐き出されており、なにか足りないものがあるようなのですが…  単純なサンプルアプリなどは普通に動作していますので、開発環境にとりあえず不備はないと思います。  Javamail用の3つのファイルもビルドパスに加えてあります。  その他にも追加すべきライブラリがあるのでしょうか?  これだけの情報では、ご回答いただくのは難しいのかも知れませんが…  よろしくお願いいたします。

  • 外部メールサーバーからメールを受信して、フォルダへ振り分けるシステムを作るには?

    次のようなシステムを作ることは可能でしょうか。 Javaのカテゴリなのですが、特に言語は問いません。 FetchmailやProcmail、javamail等を利用すれば出来ると勝手に思っているのですが、どうでしょうか。 もし、このようなシステムを構築するとすればどのような技術を用いるのでしょうか。 教えてください。お願いします。 概要は、メールを適切なフォルダへ自動的に保存する。 (保存場所はメーラーのフォルダでなく、指定したストレージのフォルダ) 具体的にはこんな感じです。 メールアドレスAには色々なメールが届きます。 件名は、下記のようにカッコの中にキーワードが書かれていて、メールの内容を示しています。   「給与」 2008年度ボーナスについて   「人事」 会議のお知らせ これらのメールを件名から自動で判断し、c:\給与フォルダやd:\人事フォルダ等の該当するフォルダへ保存する。 ようは、あるメールアドレスの受信メールをメーラのフォルダでなく cドライブ等にある適切なフォルダに自動的に保存したいのです。 システムはメールサーバーからメールを受信し、その後は何か 他の技術を使うことで実現するのでは??と思っているのですが…

  • javamailにてメール文字化け

    javamailにて文字コードutf-8にてメール配信ソフトを作ってみたのですが、私の使っているモバイル nexus7のフリーメールに受信成功したのだが、文字化けしてしまいました。nezus7のメールソフトの エンコードがutf-8でないからだと判断。javamailの文字コードを途中でutf-8から該当しそうな(iso-2022-jpなど)にデコードしてから送信。しかし文字化けが治らず挫折してしまいました。utf-8なら 対応していると思ったのですが…。nexusの文字コードをどのように取得することができるかどなたかわかる方ご教授の程宜しくお願い申し上げます。 尚、content = new String(content.getBytes("utf-8"),"");""の部分にnexus7の文字コードに該当しそうな文字コードを数種類入れて実験!?してみました。どれも失敗。

    • ベストアンサー
    • Java
  • javamailを使ってのメール送信。

    james-2.0a3、javamail-1.2、pop3-1.1.1をインストールした後に環境変数もセットしました。ここでjavamailの参考サイト(http://www.showa-cats.com/technical/Java/javamail/index.htm)のサンプルプログラムを試しに実行しようとしたところ下記に示すエラーが出ました。windows2000Professional, j2sdk1.4.0_01, Tomcat3.3.1 サーブレット実行後のエラー 『Error: 500  場所: /netjv/servlet/MsgSend  内部のサーブレットのエラー:  java.lang.NoClassDefFoundError: javax/mail/Message       at MsgSend.doPost(msgsend.java:37)・・略』 tomcatコマンドプロンプトより 『2003-02-05 10:23:59 - Ctx(/netjv) : Exception in R( /netjv        + /servlet/MsgSend +   null) - java.lang.NoClassDefFoundError: javax/mail/Message at MsgSend.doPost(msgsend.java:37)・・略』 MsgSend.javaのソースより  『37:PrintWriter pw = response.getWriter();   38:try {   39://MsgSendBeansのインスタンスを取得   40:MsgSendBeans msb = new MsgSendBeans();』 37行目のMsgSendBeans.javaのインスタンスの取得がうまくいってないと思うのですが、どうしたらよいかがわかりません。どなたかよろしくお願いします。

  • EdMaxで、新たに受信したメールが表示されない

    メール受信をして、新着メールの件数○件と表示されるのに受信フォルダに表示されません。 サーバーがいっぱいで受信できないのかと思って設定を確認したところ、以下のように設定されています。 アカウント設定→受信→受信方法(メール)→「受信後、サーバーからメールを削除」だけにチェック 上記の設定内容からすると、サーバーからはメールが随時削除され、溜らないずだと思うのですが、受信フォルダ→修復 をするとちょうど12000のメールが復活します。12000個目のメールは9/11のもので、その後のメールが全く見れない状況です。 これは、「受信後、サーバーからメールを削除」しているはずが、実際には「削除されていない」ということでしょうか。削除されないからサーバーがいっぱいになって、新しいメールが受信できないのでしょうか。 どうすればいいのかわからず困っています。助けて下さい。

  • IIS 有効なセッションIDの取得について

    お世話になります。 表題につきましてご教授願います。 現在、  Windows2003  IIS6  ASP にて、社内システム構築中です。 ある、機能でセッションIDをフォルダ名としサーバー上にフォルダ を作成しております。 そこで質問ですが、サーバーが振ったセッションIDの中で、(サーバー から見た)現在有効なセッションIDを取得することは可能でしょうか。 クライアント側で既にブラウザを落としている(セッションが切れている) 場合は、作成されたフォルダを削除したいと考えているのですが、その際、 有効なセッションIDが取得できれば、セッションが切れているIDのフォルダを 削除できるかな。。と考えている次第です。 以上、宜しくお願い致します。

  • 受信したメールが消えた

    ウエブのヤフーメールですが、受信したメールがすべて消えてしまいました。デスクトップ、ノート、携帯で見ても同じで、受信フォルダ以外の自分で作ったフォルダに入れたものは消えていません。 自分のミスでサーバーのメールをすべて消去してしまうことがあるのですか。心当たりといえば、今日、ノートをリカバリCDでリカバリーしたのですが。新着は1件入りましたので大丈夫のようです。過去のメールを回復する仕方はありませんか。教えてください。

専門家に質問してみよう