gpt4 book ai didi

java - java邮件API中的message.writeto()和message.getinputstream有什么区别吗?

转载 作者:行者123 更新时间:2023-11-30 07:58:57 25 4
gpt4 key购买 nike

我正在尝试写电子邮件至 .eml使用 Java Api 编写文件。写入文件后,我需要使用 ' SHA1 验证文件是否已成功下载。 ' 算法。我尝试了以下方法。

1)我已将电子邮件消息写入.eml文件,下载完成后,我使用 message.getInpuStream() 获取同一邮件的输入流现在我使用这个流并写了 .eml要验证的文件流。现在却失败了。

2)我写了.eml只需复制 InputStream使用 message.getInpuStream() 拍摄给一些.eml's FileOutputStream 。我再次传递了这两者的输入流以使用 SHA1 进行验证。 。现在验证成功,但是当我打开下载的 .eml 文件时,它只显示正文内容,不显示任何附件以及发件人和收件人信息。

所以我想知道写邮件到.eml有什么区别吗?使用message.writeTo()并使用 message.getInputStream

任何建议或信息表示赞赏。

以下是我正在尝试的代码。

public class EmailArchiveTest {
public static void main(String args[]) throws Exception {


String host = "pop.gmail.com";
String username = "xxxx@gmail.com";
String password = "password";
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "pop3s");
Session session = Session.getInstance(new Properties(), null);
Store store = session.getStore("imaps");
store.connect(host, username, password);

Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);

Message message[] = folder.getMessages();
OutputStream out=null;
InputStream inStream=null;
File file=null;

for (int i = 0; i < 20; i++) {

inStream=message[i].getInputStream();
file=new File("E:/MailTest/mail-"+i+".msg");
out=new FileOutputStream(file);

IOUtils.copy(inStream, out);

IOUtils.closeQuietly(inStream);
IOUtils.closeQuietly(out);

System.out.println("Validating the File ...!!!");

InputStream srcInStream=message[i].getInputStream();
InputStream tgtStream=new FileInputStream(file);
EmailHelper helper=new EmailHelper();
//calling method to validate the file
boolean validate=helper.fileValidation(srcInStream, tgtStream, "SHA1");
if(validate){
System.out.println("Validation Successful...!!");
}else{
System.out.println("Validation Failed..!!");
}
tgtStream.close();
srcInStream.close();
}

folder.close(false);
store.close();
}
}

提前致谢

最佳答案

writeTo 方法包括标题和内容。 getInputStream 方法仅返回内容。如果您需要包含 header 和内容的 InputStream,请将其写入文件然后读回,或使用 PipedInputStream和一个线程。

关于java - java邮件API中的message.writeto()和message.getinputstream有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32226006/

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