6

インライン画像と HTML コンテンツを含むメール本文を保存する最良の方法を探しています。メールに含まれるすべてを保持したい。

最終的な目標は、メール本文全体を PDF に保存することです

電子メール本文を PDF に書き込む直接的な方法がある場合は?

そうでない場合、メールを保存するのに最適な形式は何ですか?

他の利用可能な API を使用して、HTML、DOC などを 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;
} 

提案してください。ありがとうございました!

4

1 に答える 1

5

MimeMessage として、自然な状態で保存します。

JavaMail MimeMessage はテキストにストリーミングできます。これは、メッセージがメールに届く方法だからです。たとえば、MimeMessage.writeToはメッセージをテキストとして保存します。同様に、MimeMessage.parseはそれを読み戻します。MimeMessage の 1 つでは、テキストや添付ファイルなどを非常に簡単に取得できます。

シリアル化された Java オブジェクトとしてストリーミングすることもできますが、率直に言って、私はそうしません。テキスト表現ははるかに便利です。

于 2012-11-27T04:45:19.050 に答える