Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java Mail API保存电子邮件(包括图像和HTML数据)的最佳方法?_Java_Email_Pdf_Jakarta Mail_Html Email - Fatal编程技术网

使用Java Mail API保存电子邮件(包括图像和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

我正在寻找保存电子邮件正文的最佳方法,其中包括内联图像和HTML内容。我想保留邮件中包含的所有内容


我的最终目标是将完整的电子邮件正文保存为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的?。事实上我也处于同样的情况。如果你能帮我,我会帮上大忙的。