Java解析eml檔案
阿新 • • 發佈:2019-02-13
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.internet.MimeMessage;
public class eml {
public static void main(String args[]) {
test();
}
public static void test() {
try {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props,
null);
InputStream inMsg;
inMsg = new FileInputStream("D:\\test.eml");
Message msg = new MimeMessage(session,
inMsg);
String[] date=msg.getHeader("Date");
// String[] from=
// String[] to=
if (msg.isMimeType("multipart/*")
|| msg.isMimeType("MULTIPART/*")) {
Multipart mp = (Multipart) msg.getContent();
int totalAttachments = mp.getCount();
if (totalAttachments > 0) {
for (int i = 0; i < totalAttachments; i++) {
Part part = mp.getBodyPart(i);
String s = getMailContent(part);
String attachFileName = part.getFileName();
String disposition = part.getDisposition();
String contentType = part.getContentType();
if ((attachFileName != null && attachFileName.endsWith(".ics"))
|| contentType.indexOf("text/calendar") >= 0) {
String[] dateHeader = msg.getHeader("date");
}
}
inMsg.close();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getMailContent(Part part)
throws Exception {
String contenttype = part.getContentType();
int nameindex = contenttype.indexOf("name");
boolean conname = false;
if (nameindex != -1) {
conname = true;
}
StringBuilder bodytext = new StringBuilder();
if (part.isMimeType("text/plain")
&& !conname) {
bodytext.append((String) part.getContent());
} else if (part.isMimeType("text/html")
&& !conname) {
bodytext.append((String) part.getContent());
} else if (part.isMimeType("multipart/*")) {
Multipart multipart = (Multipart) part.getContent();
int counts = multipart.getCount();
for (int i = 0; i < counts; i++) {
getMailContent(multipart.getBodyPart(i));
}
} else if (part.isMimeType("message/rfc822")) {
getMailContent((Part) part.getContent());
} else {
}
return bodytext.toString();
}
}
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.internet.MimeMessage;
public class eml {
public static void main(String args[]) {
test();
}
public static void test() {
try {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props,
null);
InputStream inMsg;
inMsg = new FileInputStream("D:\\test.eml");
Message msg = new MimeMessage(session,
inMsg);
String[] date=msg.getHeader("Date");
// String[] from=
// String[] to=
if (msg.isMimeType("multipart/*")
|| msg.isMimeType("MULTIPART/*")) {
Multipart mp = (Multipart) msg.getContent();
int totalAttachments = mp.getCount();
if (totalAttachments > 0) {
for (int i = 0; i < totalAttachments; i++) {
Part part = mp.getBodyPart(i);
String s = getMailContent(part);
String attachFileName = part.getFileName();
String disposition = part.getDisposition();
String contentType = part.getContentType();
if ((attachFileName != null && attachFileName.endsWith(".ics"))
|| contentType.indexOf("text/calendar") >= 0) {
String[] dateHeader = msg.getHeader("date");
}
}
inMsg.close();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getMailContent(Part part)
throws Exception {
String contenttype = part.getContentType();
int nameindex = contenttype.indexOf("name");
boolean conname = false;
if (nameindex != -1) {
conname = true;
}
StringBuilder bodytext = new StringBuilder();
if (part.isMimeType("text/plain")
&& !conname) {
bodytext.append((String) part.getContent());
} else if (part.isMimeType("text/html")
&& !conname) {
bodytext.append((String) part.getContent());
} else if (part.isMimeType("multipart/*")) {
Multipart multipart = (Multipart) part.getContent();
int counts = multipart.getCount();
for (int i = 0; i < counts; i++) {
getMailContent(multipart.getBodyPart(i));
}
} else if (part.isMimeType("message/rfc822")) {
getMailContent((Part) part.getContent());
} else {
}
return bodytext.toString();
}
}