読者です 読者をやめる 読者になる 読者になる

javaからGmailにアクセス

Java

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に接続することも可能なようだ(上記コードはGmailRSSインターフェイスを使用)。ただ、メールを取得するメソッドが、何故か未読(かつアーカイブされていない)メッセージを取得するものしか無い。
ソースを見た限りでは、簡単に拡張できそうだが・・・。