使用Java Mail API保存电子邮件(包括图像和HTML数据)的最佳方法?
我正在寻找保存电子邮件正文的最佳方法,其中包括内联图像和HTML内容。我想保留邮件中包含的所有内容使用Java Mail API保存电子邮件(包括图像和HTML数据)的最佳方法?,java,email,pdf,jakarta-mail,html-email,Java,Email,Pdf,Jakarta Mail,Html Email,我正在寻找保存电子邮件正文的最佳方法,其中包括内联图像和HTML内容。我想保留邮件中包含的所有内容 我的最终目标是将完整的电子邮件正文保存为PDF格式 是否有一种将电子邮件正文直接写入PDF的方法 如果不是,保存电子邮件的最佳格式是什么 我可以使用其他可用的API将HTML、文档等转换为PDF private void downloadAttachment(Part part, String folderPath) throws Exception { String disPositio
我的最终目标是将完整的电子邮件正文保存为PDF格式 是否有一种将电子邮件正文直接写入PDF的方法 如果不是,保存电子邮件的最佳格式是什么 我可以使用其他可用的API将HTML、文档等转换为PDF
private void downloadAttachment(Part part, String folderPath) throws Exception {
String disPosition = part.getDisposition();
String fileName = part.getFileName();
String decodedText = null;
logger.info("Disposition type :: " + disPosition);
logger.info("Attached File Name :: " + fileName);
if (disPosition != null && disPosition.equalsIgnoreCase(Part.ATTACHMENT)) {
logger.info("DisPosition is ATTACHMENT type.");
File file = new File(folderPath + File.separator + decodedText);
file.getParentFile().mkdirs();
saveEmailAttachment(file, part);
} else if (fileName != null && disPosition == null) {
logger.info("DisPosition is Null type but file name is valid. Possibly inline attchment");
File file = new File(folderPath + File.separator + decodedText);
file.getParentFile().mkdirs();
saveEmailAttachment(file, part);
} else if (fileName == null && disPosition == null) {
logger.info("DisPosition is Null type but file name is null. It is email body.");
File file = new File(folderPath + File.separator + "mail.html");
file.getParentFile().mkdirs();
saveEmailAttachment(file, part);
}
}
protected int saveEmailAttachment(File saveFile, Part part) throws Exception {
BufferedOutputStream bos = null;
InputStream is = null;
int ret = 0, count = 0;
try {
bos = new BufferedOutputStream(new FileOutputStream(saveFile));
part.writeTo(new FileOutputStream(saveFile));
} finally {
try {
if (bos != null) {
bos.close();
}
if (is != null) {
is.close();
}
} catch (IOException ioe) {
logger.error("Error while closing the stream.", ioe);
}
}
return count;
}
请建议。谢谢大家! 将其保存在自然状态,作为MimeMessage JavaMail MIMemessage可以流式传输到文本,因为这就是它们在邮件中的到达方式。例如,将消息另存为文本。同样地,我会把它读回来。在一封短信中,你可以很容易地得到文本、附件等
您也可以将其作为序列化Java对象流式输出,但坦率地说,我不会。文本表示法更有用。实际上,我不能将其保留为文本。我把我的信息作为mimessage。但将其保存为文本会使我丢失图像。我需要保留它们。你还有什么别的建议吗?如果你照威尔说的做,你就不会失去任何东西。不过,与他所说的不同,mimessage不一定是纯文本格式,在二进制传输编码的情况下,它们也可以包含二进制数据段。我的最终目标是将完整的电子邮件正文保存到PDF中。我应该这样做吗MimeMessage.writeTo(newoutputstream(“output.pdf”))?在这种情况下生成的pdf会给出一个错误,指出文件的类型无效。我不想保存它,然后再重新阅读。只想把它转换成PDF。选择一个合适的输出流对我有用吗?我的评论是回应你对威尔答案的评论,而不是回应你最初的问题。(顺便说一句,你问题的标题有误导性,因为你不想保存电子邮件,而是将其呈现为PDF格式;威尔的回答提供了一个很好的保存选择,但不用于呈现。)你似乎说你有其他一些用于呈现的API;显然,保存数据的最佳格式是其他API能够理解的格式。您是如何使用iText或PDFBox创建pdf的?。事实上我也处于同样的情况。如果你能帮我,我会帮上大忙的。