writeTo方法可以把message信息寫(xiě)入OutputStream,從而可以保存沖eml文件。項目中一個(gè)需求是需要把eml文件讀入并解析。
自己實(shí)現解析當然可以,不過(guò)挺復雜的,要實(shí)現信息頭的分析,信息本題的分析...首先想到的當然是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類(lèi)的一個(gè)構造函數可以接收InputStream,這樣就簡(jiǎn)單了,只要用FileInputStream讀入文件即可:)
需要注意的是這個(gè)構造函數還需要一個(gè)Session參數,看網(wǎng)上的例子是用smtp服務(wù)器的信息來(lái)填充這個(gè)session的,但是我想這個(gè)session可能是用來(lái)發(fā)郵件,或者轉發(fā)用的,所以如果不發(fā)送郵件,僅僅是讀入eml并解析,隨便一個(gè)session的實(shí)力都可以。實(shí)現法法如下:
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)行解析即可。
聯(lián)系客服