2014-10-27 61 views
1

我們可以從Gmail收件箱閱讀郵件,但是我們是否可以從標籤中讀取? 如果我從http://harikrishnan83.wordpress.com/2009/01/24/access-gmail-with-imap-using-java-mail-api/如何使用java訪問gmail中的標籤文件夾?

import java.util.Properties; 

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

public class InboxReader { 

    public static void main(String args[]) { 
     Properties props = System.getProperties(); 
     props.setProperty("mail.store.protocol", "imaps"); 
     try { 
      Session session = Session.getDefaultInstance(props, null); 
      Store store = session.getStore("imaps"); 
      store.connect("imap.gmail.com", "<username>", "password"); 
      System.out.println(store); 

      Folder inbox = store.getFolder("Inbox"); 
      inbox.open(Folder.READ_ONLY); 
      Message messages[] = inbox.getMessages(); 
      for(Message message:messages) { 
       System.out.println(message); 
      } 
     } catch (NoSuchProviderException e) { 
      e.printStackTrace(); 
      System.exit(1); 
     } catch (MessagingException e) { 
      e.printStackTrace(); 
      System.exit(2); 
     } 

    } 

} 

下面的例子如果我改變「收件箱」,由它拋出一個錯誤標籤名稱:收件箱中是找不到的。 請幫忙嗎?

+0

因此,在這一行: '文件夾的收件箱= store.getFolder( 「收件箱」);' 你可以嘗試這樣的事: 'Folder inbox = store.getFolder(「FolderNameGoesHere」);' – ryekayo 2014-10-27 22:06:01

+0

With inbox = store.getFolder(「folderA」);結果是CONTENT:[email protected],內容不是字符串 – 2014-10-28 02:33:14

+0

我的問題已通過msg.writeTo(System.out)解決; msg.setFlag(Flags.Flag.DELETED,true); – 2014-10-28 02:50:00

回答

2

試試下面的代碼爲我工作:

store.getFolder("FolderNameGoesHere"); 

private static Store getConnection() throws MessagingException { 
    Properties properties; 
    Session session; 
    Store store; 
    properties = new Properties(); 
    properties.setProperty("mail.host", "imap.gmail.com"); 
    properties.setProperty("mail.port", "995"); 
    properties.setProperty("mail.transport.protocol", "imaps"); 
    session = Session.getInstance(properties, 
            new javax.mail.Authenticator() { 
             protected PasswordAuthentication getPasswordAuthentication() { 
              return new PasswordAuthentication("[email protected]", 
                      "dummy"); 
             } 
            }); 
    store = session.getStore("imaps"); 
    store.connect(); 
    return store; 

} 

public static boolean isMailReceivedBySubject(String subject,String folder) throws MessagingException { 
    Store store = null; 
    boolean emailReceived = false; 
    try { 
     store = getConnection(); 
     Folder mailFolder = store.getFolder(folder); 
     mailFolder.open(Folder.READ_WRITE); 
     SearchTerm st = new AndTerm(new SubjectTerm(subject), new BodyTerm(subject)); 
     Message[] messages = mailFolder.search(st); 
     for (Message message : messages) { 
      System.out.println("message : " + message.getSubject()); 
      if (message.getSubject().contains(subject)) { 
       System.out.println("Found the email subject : " + subject); 
       emailReceived = true; 
       break; 
      } 
     } 
     return emailReceived; 
    }finally { 
     if (store != null) { 
      store.close(); 
     } 
    } 
} 
相關問題