【发布时间】:2015-03-02 19:48:51
【问题描述】:
我有一个需要解析的电子邮件线程。我正在使用 JavaMail API 来阅读电子邮件的内容。到目前为止,这是我的代码
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:opscron@xxxxx.com]
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);
然后尝试遍历标题和内容,我得到了第一条消息中的所有内容!任何想法如何解决这个问题?
谢谢
【问题讨论】:
标签: java email jakarta-mail