• ベストアンサー

JavamailでGmailのお気に入りフラグをON/OFFしたい。

JavamailでGmailのお気に入りフラグをON/OFFしたい。 Java/Android/Eclipse環境でJavamailを使用したGmailクライアントを開発中です。 Gmailでは重要なメールを「☆」「★」で切り替えて表してますが 受信したメールメッセージのどのフラグをみれば星の状態を見ることが出来るのでしょうか? 非常に単純な質問で申し訳ありませんがネット上で上手く検索に引っかからなかったので質問してみました。 ご教授のほど宜しくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

GmailやThunderbird上のStarredは、 RFC2060規格上はFlaggedという名前のようだ。 http://tools.ietf.org/html/rfc2060 サンプルを参考にした ユーザー名とパスワードをソースにベタ書きするわけにもいかず、 標準入力から、ユーザー名(Gmailの場合@gmail.comも含む)とパスワードを入力し、 その最初のメールの星の状態をMessage.getFlagsとMessage.setFlagを用い、実行するごとにON/OFFを入れ替えるようにしています。実行後の確認でブラウザを開いたままにしている場合、更新ボタン押すのを忘れずに。 #質問者がある程度のレベルにあることを前提にしている。 ##最初に書いたのはsetFlagのみだった。ある程度のレベルならgetFlagメソッドだろうという想像を付けてもらえるとは思うのだが、人によってはそのまま書いてくれないとわからんとごねられてげんなりすることが。一応対策に両方使ってみたけど、余計複雑になって悩む。っていうかそのレベルの人だと標準入力出力の地点で詰むからなぁ(ぶつぶつ… #Windows XP上からJava + JavaMail APIを用いて、操作しています。(IMAP4を利用) #少なくとも前記環境ではうまくいっていますが、Android自身をもっていないので実際にできるのかは知りません。 ================= import javax.mail.*; import java.util.*; import java.io.*; public class Q6226412{ public static void main(String[] args){ try{ Properties props = System.getProperties(); String username; String password; /* username and password input:start */ try{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("username?"); username = br.readLine(); System.out.println("password?"); password = br.readLine(); }catch(IOException e){ System.out.println(e.getStackTrace().toString()); return; } /* username and password input:ehd */ Session session = Session.getInstance(props, null); Store store = null; store = session.getStore("imaps"); store.connect("imap.gmail.com",993,username ,password); Folder folder = store.getDefaultFolder(); Folder folder2 = folder.getFolder("INBOX"); folder2.open(Folder.READ_WRITE); Message m = null; /* seems not 0-based, but 1-based.*/ m = folder2.getMessage(1); m.setFlag(Flags.Flag.FLAGGED, !m.getFlags().contains(Flags.Flag.FLAGGED)); folder2.close(true); store.close(); }catch(NoSuchProviderException e){ System.out.println(e.getStackTrace().toString()); }catch(MessagingException e){ System.out.println(e.getStackTrace().toString()); } System.out.println("Done"); } }

masakazu_s
質問者

お礼

himajin100000さん 回答ありがとうございます。 ★のフラグ名がFLAGGED分からず悩んでました。 ずっとfavoriteとかStarとかって検索してハマりました... 無事Android、JavaMail、IMAP4で★切り替え出来ました。 ありがとうございます。

関連するQ&A