2016-11-30 52 views
0

我使用javamail下載電子郵件,但現在我需要按域過濾一些電子郵件地址。使用javamail按域過濾電子郵件

我嘗試使用FromStringTerm,但我無法知道正確的模式來過濾它。

編輯1jmehrens部分解決了我的問題。我想過濾當我從文件夾中收到消息,如:

  Store store = session.getStore("imap"); 
      store.connect(configc.host, configc.email, configc.pass); 
      Folder folderInbox = store.getFolder("INBOX"); 
      folderInbox.open(Folder.READ_ONLY); 

      Message[] arrayMessages1 = folderInbox.search(??); 

如何在此處按域進行過濾?

回答

0

的FromStringTerm繼承在javax.mail.search.SearchTerm描述的行爲:

此類實現對字符串匹配方法。當前的實現只提供子字符串匹配。我們可以添加比較(如strcmp ...)。

所以沒有模式它執行子框匹配。

下面是測試情況:

public class DomainMatch { 

    public static void main(String[] args) throws Exception { 
     MimeMessage msg = new MimeMessage((Session) null); 
     msg.addFrom(InternetAddress.parse("[email protected]")); 
     msg.saveChanges(); 

     System.out.println(new FromStringTerm("@bar.org").match(msg)); 
     System.out.println(new FromStringTerm("@spam.org").match(msg)); 
    } 
} 

使用javax.mail.Folder::search文檔,你可以這樣寫是這樣的:

Store store = session.getStore("imap"); 
store.connect(configc.host, configc.email, configc.pass); 
Folder folderInbox = store.getFolder("INBOX"); 
folderInbox.open(Folder.READ_ONLY); 

Message[] onlyBarOrg = folderInbox.search(new FromStringTerm("@bar.org")); 
+0

感謝您的回覆jmehrens。我更新了我的問題,提供了我需要做的一些細節。 – ikk1

+0

這就像一個魅力。非常感謝。 – ikk1