javamail は こちら(Oracle)からダウンロードします ダウンロードして解凍すると、サンプルが demo ディレクトリにあります。 その中の copier.java に日本語でコメントを入れてもう少し解りやすく 改造したものです。 サンプルは、URLName で接続していましたが、ユーザ間のコピーのほうが 解りやすいので変更しています。
import java.util.*; import java.io.*; import javax.mail.*; import javax.mail.event.*; import javax.activation.*; import com.sun.mail.imap.*; public class Main { private MyTool out = new MyTool(">>>"); // ***************************************************** // エントリポイント // ***************************************************** public static void main(String[] args) { Main thisClass = new Main(); } // ***************************************************** // コンストラクタ // ***************************************************** public Main() { super(); my_acton(); } // ***************************************************** // 初期処理 // ***************************************************** private void my_acton() { out.println("処理開始"); try { Properties props = System.getProperties(); // セッションオブジェクトの取得 Session session = Session.getInstance(props, null); // session.setDebug(true); // Store オブジェクトの取得 Store store = session.getStore("imap"); // 接続 store.connect("サーバー", "ユーザ", "パスワード"); // 現在のユーザのフォルダオブジェクトを取得 Folder[] folders = store.getPersonalNamespaces(); for (int index = 0; index < folders.length; index++) { // さくらインターネットでは、INBOX 一つ out.println(folders[index].getFullName()); } // フォルダの存在チェック Folder folder = folders[0]; // INBOX if (folder == null || !folder.exists()) { out.println("Invalid folder"); System.exit(1); } // URL の内容を表示 out.println( folder.getURLName().toString() ); // フォルダを開く folder.open(Folder.READ_WRITE); int m_cnt = folder.getMessageCount(); if (m_cnt == 0) { out.println("メッセージが存在しません"); folder.close(false); // true では、メッセージは全て削除 store.close(); System.exit(0); } out.println("メッセージ件数 : " + m_cnt); Store store2 = session.getStore("imap"); // 別ユーザに接続 store2.connect("サーバー", "別のユーザ", "別のユーザのパスワード"); // 別ユーザのフォルダオブジェクト Folder[] folders_2 = store2.getPersonalNamespaces(); Folder dfolder = folders_2[0]; if (!dfolder.exists()) { out.println("出力先フォルダが存在しません"); folder.close(false); store.close(); System.exit(0); } // コピーするメッセージの範囲を作成 // Message[] msgs = folder.getMessages(2, 4); // 範囲指定 Message[] msgs = folder.getMessages(); // 全てのメッセージ // メッセージのコピー folder.copyMessages(msgs, dfolder); folder.close(false); store.close(); } catch (Exception ex) { ex.printStackTrace(); } out.println("処理終了"); } // ***************************************************** // 内部用クラス // ***************************************************** private class MyTool { private String mark = null; MyTool(String pm) { mark = pm; } public void println(String str) { System.out.println( this.mark + str ); } } }
メッセージの取得には、単一メッセージの取得もあります。
|
【java : 通信関連の最新記事】
- Java : WEB上のテキストファイルを取得する
- Java11 + Visual Studio Code + JavaMail( with JavaBeans Activation Framework )
- Javamail で IMAP 受信
- OkHttp v3.8.0 jar( と okio 1.13.0.jar ) を Eclipse のプロジェクトに追加して一般的な POST 送信を行う
- java をコマンドプロンプトからビルドして実行するサンプル。( メール送信が初心者には楽しいはず )
- Eclipse + JFace : HttpURLConnection で GET
- javamail でメール送信と、付属のバッチビルド用のスクリプトの解説
- Java : バッチでテストする Twiiter API の『検索処理』
- google-gson(Java) を使って、JSON を 定義済みクラスのオブジェクトに一括変換する
- Java : RSS(Document) から、item の中の先頭の指定した要素の値を取得するクラス
- google-gson で、JSON 文字列の構成要素の一覧を取り出す処理
- java : Apache commons-net-3.0.1 を使ってごく自然に FTPS(セキュア) でファイルのアップロード/ダウンロード
- javamail 1.4.4 : IMAP のメール受信イベントでメールを受け取ったら処理を行う
- Java : WEB 上の XML データの内容を取得する