2014年12月4日木曜日

Android AndroidでGmailのメールを取得する(2)

前回からずいぶん投稿間隔が離れていました。
すみません、ブログのことをすっかり忘れてました。ページビューが地味にあったので、しっかりと書かないとだめですよね……。

前回、「セッションを取得後、Gmail Imapサーバに接続する」の項目で、「com.sun.mail.imap.protocol.IMAPSaslAuthenticator」が見当たらず、接続できないどころかClassNotFoundExceptionが吐き出される、と書きました。

自分が実装していたときには、まだGmailにOAuth2.0認証して接続するという技術情報が少なく、手探り状態でやっていたために上記のような課題にぶつかってしまったのですが、
現在では比較的AndroidでSSLメール通信しようということで、いくつかライブラリが整っているので、このような問題にぶつかることはあまりないかもしれません。

ぶつかってしまった場合は、javax.mail.jarを自分のように単純にOracleのホームページからダウンロードしてAndroidプロジェクト内のlibsに突っ込んだからだと思います。

したがって、解決方法は、以下のようなAndroid RuntimeではないクラスをIncludeしたライブラリを拝借して使わせてもらうこと!

javamail-android

※ 上記のURL先のライブラリは「javax.security」がないため、以下を利用することをお勧めします。
重ね々ね、申し訳ありません。

https://github.com/ruiaraujo/javamail_android



以上!
そうすることで、前回投稿の「5) セッションを取得後、Gmail Imapサーバに接続する」セクションの処理で正常にGmailに接続できることが確認できるかと思います。

そのあとは、所謂いつものJavaMailの使い方でjavax.mail.Folderやjavax.mail.Messageを取得して、メール内容を確認したりすることができると思います。

ただ、Gmailは所謂フォルダでメールの振り分けしているのではなく、「ラベル」で管理しているので若干癖があるので、思いついたらその部分について記載しておきたいです。

Gmail のいくつかの相違点

上記にはっきりと一般ユーザ向けにわかりやすく「Gmail にフォルダはありません。」とありますが、Gmailにもフォルダはあります。送信済みや、INBOXはフォルダ管理されています。
この部分について詳しく知りたい場合は以下のドキュメントを確認するとわかりやすいかもしれません。

IMAP Extensions