Fork me on GitHub

Java メールの取得

  • Jan 30, 2008

categoryプラグインは存在しません。

最新のJava MailはAPIがだいぶ変わっているようなので、メモ。

環境

  • java SE 6
  • Java Mail 1.4.1
  • JavaBeans Activation Framework 1.1.1 </ul>

    未読メールの一覧取得

    以下はGroovyでの記述例。

    import javax.mail.*
    import javax.mail.search.*
    
    String host = "mail.hoge"
    String user = "user"
    String pass = "pass"
    

    IMAPサーバに接続

    Session session = Session.getInstance(System.getProperties(), null)
    Store store = session.getStore("imap")
    store.connect(host, user, pass)
    

    INBOXを開く

    Folder folder = store.getFolder("INBOX")
    folder.open(Folder.READ_ONLY)
    

    未読メールを取る

    SearchTerm term = new FlagTerm(new Flags(Flags.Flag.SEEN), false)
    Message[] messageList = folder.search(term)
    

    取ったメールの題名を表示

    messageList.each \{
      println it.getSubject()
    \}
    
    folder.close(false)
    

    SSLでの接続

    接続にSSLを利用する場合は、Sessionを取得する際のPropertiesに

    Properties props = System.getProperties();
    props.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory")
    props.setProperty("mail.imap.socketFactory.fallback", "false")
    props.setProperty("mail.imap.socketFactory.port", "993")
    props.setProperty("mail.imap.port", "993")
    

    という指定を追加する。