2011年1月5日水曜日

Androidでメール送受信(IMAP編)

Android標準機能ではできないので、JavaMailを使う。

①必要なライブラリをダウンロード

http://code.google.com/p/javamail-android/downloads/list から
additional.jar、mail.jar、activation.jarを入手。

②Eclipse上で参照ライブラリに上3つを追加。

③AndroidManifest.xmlに、外部ライブラリの宣言を追加。


    <!-- mail.jar  -->
    <uses-library android:name="javax.mail" />
    <!-- activation.jar  -->
    <uses-library android:name="javax.activation" />
    <!-- additional.jar  -->
    <uses-library android:name="org.apache.harmony.awt" />

    <!-- インターネットに接続できる権限を追加  -->


    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

④一覧を取得するコード

import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;

public class IMAPDemo {

 /**
  * @param args
  */
 public static void main(String[] args) throws Exception{
  String host = "imap.gmail.com";
  int port = 993;
  String user = "XXX@gmail.com";
  String password = "XXX";
  String target_folder = "INBOX";

  Properties props = System.getProperties();
  Session sess = Session.getInstance(props, null);
//  sess.setDebug(true);

  Store st = sess.getStore("imaps");
  st.connect(host, port, user, password);
  Folder fol = st.getFolder(target_folder);
  if(fol.exists()){
   for(Folder f : fol.list()){
    System.out.println(f.getName());
   }
   fol.open(Folder.READ_ONLY);
   for(Message m : fol.getMessages()){
    System.out.printf("%s - %d\n", m.getSubject(), m.getSize());
   }
   fol.close(false);
  }else{
   System.out.printf("%s is not exist.", target_folder);
  }
  st.close();
 }




参考サイト
http://androside.com/page_contents/page_android_javaMail.html
http://d.hatena.ne.jp/jbking/20080608/p1

0 件のコメント:

コメントを投稿