我有一個電子郵件線程,我需要解析。我正在使用JavaMail API來讀取電子郵件的內容。這是到目前爲止我的代碼JavaMail:如何閱讀電子郵件線程
public static void main(String[] args) throws MessagingException, IOException {
InputStream in = new FileInputStream(new File("C:/Users/atomar/Desktop/Projects/CRM/mysamples/test.txt"));
BufferedReader bin = new BufferedReader(new InputStreamReader(in));
String content = collect(bin);
Session s = Session.getDefaultInstance(new Properties());
InputStream is = new ByteArrayInputStream(content.getBytes());
MimeMessage message = new MimeMessage(s, is);
DataSource ds = new FileDataSource(new File("C:/Users/atomar/Desktop/Projects/CRM/mysamples/test.txt"));
MimeMultipart mp = new MimeMultipart(ds);
System.out.println(mp.getCount());
MimeBodyPart bp1 = (MimeBodyPart) mp.getBodyPart(0);
System.out.println(bp1.getContent().toString());
for(Enumeration<Header> e = bp1.getAllHeaders(); e.hasMoreElements();)
{
Header hd = e.nextElement();
System.out.println(hd.getName());
System.out.println(hd.getValue());
}
}
public static String collect(BufferedReader in) throws IOException {
String line;
StringBuffer sb = new StringBuffer();
while ((line = in.readLine()) != null) {
sb.append(line);
sb.append("\n");
}
return sb.toString();
}
這裏是電子郵件消息:
From: Dxx, Sxxx (CWM-NR)
Sent: Monday,March 02, 2015 6:18 AM
To: ons; +CMV; Sart, Rhi; +cWK-
Application-Monitoring-team; +R00; +Dps Group; +C-TCS-
OPS
Subject: RE: FATAL: /home/coprod/shells/cron/loades FAILED FOR
BUSINESS DATE 2015xxxx
Team,
Informed Igor, and he will look into the issue.
Thanks & Regards,
Das
-----Original Message-----
From: Ns [mailto:[email protected]]
Sent: 2015, March, 02 6:00 AM
To: +CPS-DEV; Sat, Ru; +-HAWcm-iGAK;
+R00; +Dops Group; +CCS-OPS
Subject: FATAL: /home/coprod/shells/cron/lot_trades FAILED FOR BUSINESS
DATE 2015xxxx
Bus Date : 2015xxxx
Log File : /ho/backofce/ls/lod_narades.20152
Error : Input file </e/boe/adles/NAS27.txt> does not
exist.
Log excerpt:
==================================================================================
===================================
START : Mon Mar 2 06:00:08 EST 2015 SCRIPT NAME IS :
/he/crod/se/cron/lorades
USER NAME IS : gntyu HOST NAME IS : ny8678i01
DB_SERVER IS : PROD_SERVER ARG LIST:
=> 06:00:08 : Using input file: /me/boshe/aes/NA27.txt
---------------------------------
首先,這是閱讀這條消息的正確方法是什麼?所以,現在,我的
System.out.println(mp.getCount());
給我一個計數1.我認爲它應該是2,因爲這裏有兩條消息。有趣的是,如果我嘗試獲取標題和內容,我會得到第二封消息的所有內容!
另外,如果我閱讀使用
MimeMessage message = new MimeMessage(s, is);
該文件,然後試圖遍歷標題和內容,我得到的所有東西的第一條消息中!任何想法如何解決這個問題?
感謝
正確,現在我明白了。 MimeMultiPart消息僅在電子郵件中有任何附件(零件)時纔有效。 「原始消息」分隔符下面的內容是第一封電子郵件,頂部的電子郵件是第二封電子郵件。我想要將這兩封電子郵件的內容放在不同的對象中。這可能使用JavaMail API嗎? – AbtPst 2015-03-02 21:11:42
不,不是直接。 MimeMessage構造函數期望輸入包含單個消息。在這種情況下,根據郵件上的(缺少)MIME頭文件,它可以。這只是一個消息,其中某人已經完成了等同於複製和粘貼原始消息的答覆。你可以嘗試解析消息的內容,並猜測是否有人這樣做,但是你陷入了一堆並不總是奏效的啓發式方法。這不是真正的「兩條MIME消息」,更像是「一條消息帶有某種看起來像另一條消息的內容」。 – 2015-03-03 00:28:32