Java 修改电子邮件标题而不在内存中加载电子邮件内容

Java 修改电子邮件标题而不在内存中加载电子邮件内容,java,jakarta-mail,mime-message,email-parsing,Java,Jakarta Mail,Mime Message,Email Parsing,我正在使用JavaMail API解析电子邮件标题。 在电子邮件文件大小以KBs为单位的正常情况下,它不会占用JVM中的太多内存。但是,对于带有附件的大型电子邮件文件(35MB+),它会在JVM中占用巨大的空间 在momory中没有加载电子邮件内容的情况下,是否有可能修改电子邮件标题 我正在做这样的事情: Properties props = System.getProperties(); Session mailSession = Session.getDefaultInstance(prop

我正在使用JavaMail API解析电子邮件标题。 在电子邮件文件大小以KBs为单位的正常情况下,它不会占用JVM中的太多内存。但是,对于带有附件的大型电子邮件文件(35MB+),它会在JVM中占用巨大的空间

在momory中没有加载电子邮件内容的情况下,是否有可能修改电子邮件标题

我正在做这样的事情:

Properties props = System.getProperties();
Session mailSession = Session.getDefaultInstance(props, null);
InputStream source = new FileInputStream(emlFile);
MimeMessage message = new MimeMessage(mailSession, source);

message.addHeader("X-Header","HeaderValue1");
message.addHeader("Y-Header", "HeaderValue2");
message.saveChanges();
Enumeration headerschange = message.getAllHeaders();

StringBuilder headerString = new StringBuilder();
while (headerschange.hasMoreElements()) {
      Header h = (Header) headerschange.nextElement();
      headerString = headerString.append(h.getName() + ": " + h.getValue() + "\n");
}
System.out.println("headerString::::::::::::::::::::"+headerString.toString());

作为EML文件的邮件存储为文本文件。 典型的eml如下所示:

X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Received: from tomts25-srv.bellnexxia.net
        (tomts25.bellnexxia.net [209.226.175.188])
    by tactika.com (8.9.3/8.9.3) with ESMTP id NAA07621
    for <real@rgagnon.com>; Sun, 1 Feb 2004 13:25:33 -0500 (EST)
Date: Sun, 01 Feb 2004 13:31:40 -0500
From: real gagnon <real@rgagnon.com>
Reply-To: real@rgagnon.com
User-Agent: Mozilla/5.0
   (Windows; U; Windows NT 5.1; en-US; rv:1.4)
   Gecko/20030624 Netscape/7.1 (ax)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: real@rgagnon.com
Subject: Example for HowTo
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
X-UIDL: oP#!!c]^!!1;-!!T@1"!


This is an example
您可以在这里找到确切的规格


作为EML文件的邮件存储为文本文件。 典型的eml如下所示:

X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Received: from tomts25-srv.bellnexxia.net
        (tomts25.bellnexxia.net [209.226.175.188])
    by tactika.com (8.9.3/8.9.3) with ESMTP id NAA07621
    for <real@rgagnon.com>; Sun, 1 Feb 2004 13:25:33 -0500 (EST)
Date: Sun, 01 Feb 2004 13:31:40 -0500
From: real gagnon <real@rgagnon.com>
Reply-To: real@rgagnon.com
User-Agent: Mozilla/5.0
   (Windows; U; Windows NT 5.1; en-US; rv:1.4)
   Gecko/20030624 Netscape/7.1 (ax)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: real@rgagnon.com
Subject: Example for HowTo
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
X-UIDL: oP#!!c]^!!1;-!!T@1"!


This is an example
您可以在这里找到确切的规格


请向我们展示您所做的w.r.t.代码。@KrishnaKuntala,请查找已编辑的问题。请向我们展示您所做的w.r.t.代码。@KrishnaKuntala,请查找已编辑的问题。谢谢帮助。但我的要求略有不同。我需要传递所有的标题以及新的/修改的标题,以便以字符串格式进行进一步处理。我没有看到任何不同。它是要处理的文件或字符串。您可以使用BufferedWriter将修改后的文件写入新文件,也可以使用内存中的标题修改字符串。谢谢您的帮助。但我的要求略有不同。我需要传递所有的标题以及新的/修改的标题,以便以字符串格式进行进一步处理。我没有看到任何不同。它是要处理的文件或字符串。可以使用BufferedWriter将修改后的文件写入新文件,也可以使用内存中的标题修改字符串。