2010-08-12 79 views
2

我想從文件系統使用Java直接解析電子郵件(1.6)的電子郵件將文件系統中的文件夾一樣讀/解析電子郵件/與Java郵件直接從標準RFC郵件格式的文件系統

ABC -12345.msg QWE-23456.msg

,並會在標準格式:如:

MIME-Version: 1.0 
Sender: [email protected] 
Received: by 10.239.173.80 with HTTP; Thu, 12 Aug 2010 11:30:50 -0700 (PDT) 
Date: Thu, 12 Aug 2010 15:30:50 -0300 
Delivered-To: [email protected] 
Message-ID: <[email protected]> 
Subject: =?ISO-8859-1?Q?Hello_With_Acc=E9=F1ts?= 
From: Mr Sender <[email protected]> 
To: Mr Recipient <[email protected]> 
Content-Type: text/plain; charset=ISO-8859-1 
Content-Transfer-Encoding: quoted-printable 

This is a testing one 

Accent characters: 

=E9=F3=FA=F1 

Email End 

我要分析此文件,或使用現有的庫來解析該文件給我訪問標題/從/到/主題/身體等等。

這些文件都保存在本地文件系統上。我沒有通過pop/imap連接到消息存儲。什麼是我最簡單,最直接的方式來做到這一點。這些文件可能包含附件。

任何建議都非常歡迎。如果有一個現有的api(也許是javamail)可以做到這一點,請提供示例或參考。

乾杯 西蒙

回答

4

使用JavaMail API:

例如:

File[] mailFiles = getPertinentMailFiles(); 
    String host = "host.com"; 
    java.util.Properties properties = System.getProperties(); 
    properties.setProperty("mail.smtp.host", host); 
    Session session = Session.getDefaultInstance(properties); 
    for (File tmpFile : mailFiles) { 
    MimeMessage email = null; 
    try { 
     FileInputStream fis = new FileInputStream(tmpFile); 
     email = new MimeMessage(session, fis); 
     System.out.println("content type: " + email.getContentType()); 
     System.out.println("\nsubject: " + email.getSubject()); 
     System.out.println("\nrecipients: " + Arrays.asList(email.getRecipients(Message.RecipientType.TO))); 
    } catch (MessagingException e) { 
     throw new IllegalStateException("illegal state issue", e); 
    } catch (FileNotFoundException e) { 
     throw new IllegalStateException("file not found issue issue: " + tmpFile.getAbsolutePath() , e); 
    } 
    } 
0

您可以使用JavaMail立刻訪問IMAP和POP3-商店,而不是文件系統存儲。

在JavaMail中,通過javax.mail.Store的實現組織了對電子郵件的訪問。您可以檢查JavaMail API - Third Party Products以獲取特殊文件格式的javax.mail.Store的實現。也許你會自己實現javax.mail.Store,如果你找不到合適的東西。用你的商店,你可以如果你有電子郵件文本(即整個MIME有效載荷),比我會用Mime4J使用所有的JavaMail的如附件處理功能,所有怪異的MIME東西等

1

該庫比「javax.mail」更容易使用,速度更快,佔用空間更小。