javaからGmailにアクセス
java上からGmailにアクセスしたいと思ってちょっと調べてみたのでメモ。
まず初めに見つけたのがこのライブラリ
g4j - GMail API for Java
http://g4j.sourceforge.net/
(ライセンスはGPL)
で、試してみたものの、現行の最新バージョン(0.3.11)を使って動作を確認しようとしたが、Gmailにログインできないようだ。
どうもHttpでGmailのページにアクセスしていろいろやってるらしく、Gmailのhtmlが変更されたことで動作しなくなっているような・・・(標準出力にGmailのhtmlが大量に出ていることから推測。ソースの中身を確認したわけではありません。念のため)
で、次にこちらのライブラリを使ってみた。
Gmail4J
http://code.google.com/p/gmail4j/
(ライセンスはApache License 2.0)
このライブラリを使ってアプリケーションを作った時のmaven2のpom.xmlはこんな感じ(プロジェクト情報は適当です)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>example</groupId> <artifactId>gmailaccessor</artifactId> <packaging>jar</packaging> <name>gmailaccessor</name> <description>Example of Gmail API for Java</description> <version>0.1</version> <repositories> <repository> <id>maven2-repository.dev.java.net</id> <name>Java.net Repository for Maven</name> <url>http://download.java.net/maven/2</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.googlecode</groupId> <artifactId>gmail4j</artifactId> <version>0.3</version> </dependency> </dependencies> </project>
メールを取得するコードはこんな感じ
public static void main(String[] args) { GmailClient client = new RssGmailClient(); GmailConnection connection = new HttpGmailConnection("GMail-ID" ,"GMail-Password".toCharArray()); client.setConnection(connection); final List<GmailMessage> messages = client.getUnreadMessages(); for (GmailMessage message : messages) { System.out.println(message); } }
ざっくりソースを読んだ限りでは、このライブラリはjava MailAPIを使用し、IMAPクライアントとしてGMailに接続することも可能なようだ(上記コードはGmailのRSSインターフェイスを使用)。ただ、メールを取得するメソッドが、何故か未読(かつアーカイブされていない)メッセージを取得するものしか無い。
ソースを見た限りでは、簡単に拡張できそうだが・・・。