writeTo方法可以把message信息寫入OutputStream,從而可以保存沖eml文件。項目中一個需求是需要把eml文件讀入并解析。
自己實現(xiàn)解析當(dāng)然可以,不過挺復(fù)雜的,要實現(xiàn)信息頭的分析,信息本題的分析...首先想到的當(dāng)然是javamail本身的功能。
在google搜索了一下,果然找到了:
MimeMessage(Session session, java.io.InputStream is)
Constructs a MimeMessage by reading and parsing the data from the specified MIME InputStream.
javamail中MimeMessage類的一個構(gòu)造函數(shù)可以接收InputStream,這樣就簡單了,只要用FileInputStream讀入文件即可:)
需要注意的是這個構(gòu)造函數(shù)還需要一個Session參數(shù),看網(wǎng)上的例子是用smtp服務(wù)器的信息來填充這個session的,但是我想這個session可能是用來發(fā)郵件,或者轉(zhuǎn)發(fā)用的,所以如果不發(fā)送郵件,僅僅是讀入eml并解析,隨便一個session的實力都可以。實現(xiàn)法法如下:
public void readEmlFile(String fileName) throws MessagingException {
try {
//TODO readEmlFile
InputStream fis = new FileInputStream(fileName);
Object emlObj = (Object)fis;
Session mailSession = Session.getDefaultInstance(System.getProperties(), null);
MimeMessage msg = new MimeMessage(mailSession,fis);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
很明顯,只要對msg進(jìn)行解析即可。