gpt4 book ai didi

Java邮件 : How to read an email thread

转载 作者:行者123 更新时间:2023-11-30 03:31:58 24 4
gpt4 key购买 nike

我有一个电子邮件线程需要解析。我正在使用 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);

然后尝试迭代标题和内容,我在第一条消息中得到了所有内容!有什么想法可以解决这个问题吗?

谢谢

最佳答案

您浪费了很多精力来读取文件,将其转换为字符串,然后将其转换回字节,以便 MimeMessage 构造函数可以使用它。只需将文件直接提供给 MimeMessage 构造函数即可。也许使用 javax.mail.util.SharedFileInputStream .

我不知道你为什么要从相同的文件数据构建 MimeMultipart;这是完全没有必要和错误的。

请注意,您拥有的示例消息没有 Content-Type header ,因此 JavaMail 将假定它只是具有文本/纯 MIME 类型的单部分消息,这似乎就是它的本质。 “原始消息”分隔符下方的内容对于人类来说就像附件或转发的消息,但它并未反射(reflect)在消息的 MIME 结构中。就 MIME(和 JavaMail)而言,它只是邮件正文的文本的一部分。

您可能会找到 msgshow.java sample program很有帮助,尤其是它的“-m”选项,它允许它从文件中读取 MIME 消息、解析它并显示其结构或内容。

关于Java邮件 : How to read an email thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28818287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com