gpt4 book ai didi

java - 如何为带有附件的 Java MimeMessage 对象创建测试数据?

转载 作者:行者123 更新时间:2023-12-01 10:48:30 25 4
gpt4 key购买 nike

我想将邮件保存在数据库中。为了测试它,我尝试生成一些带或不带附件的测试 MimeMessage 对象。我像这样添加附件:

MimeMessage message = new MimeMessage(Session.getDefaultInstance(props, null));
Multipart multipart = new MimeMultiPart();
MimeBodyPart bodyPart = new MimeBodyPart();

bodyPart.attachFile("./files/test.txt");
bodyPart.setFileName("test.txt");

multipart.addBodyPart(bodyPart);
message.setContent(multipart);
message.saveChanges();

现在我想用它的 writeTo(OutputStream) 方法序列化这个 MimeMessage。该调用会导致 FileNotFoundException:

java.io.FileNotFoundException: ./files/test.txt: open failed: ENOENT (No such file or directory)

看起来writeTo()-方法正在搜索附加文件。难道这些文件不应该已经通过我的测试数据生成器中的 attachFile() 调用包含在 MimeMessage-Object 中吗?我是否必须对 MimeMessage-Object 做一些事情才能像这样序列化它?

最佳答案

尝试使用 File 对象,您可以在其中检查该文件是否存在。

private static BodyPart createAttachment(filepath) {
File file = new File(filepath);
if (file.exists()) {
DataSource source = new FileDataSource(file);
DataHandler handler = new DataHandler(source);
BodyPart attachment = new MimeBodyPart();
attachment.setDataHandler(handler);
attachment.setFileName(file.getName());
return attachment;
}
return null; // or throw exception
}

我注意到您提供了文件的相对路径(以点“.”开头)。仅当文件位于应用程序执行所在的同一目录(或您的情况下的子目录)中时,这才有效。尝试使用绝对路径来代替。

关于java - 如何为带有附件的 Java MimeMessage 对象创建测试数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34047789/

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