0

msgparserを使用して Outlook .msg ファイルを読み取り、コンテンツを ServletOutputStream に書き込むサーブレットを作成して、URL がヒットしたらダウンロードできるようにしました。

私が直面している問題は、ダウンロードしたファイルを Outlook で開こうとすると、そのファイルがエラーを報告することです。

エラー:ファイルが存在しないか、ファイルにアクセスする権限がない可能性があるため、ファイルを開けません......

ファイルが正しい形式 (.msg) であっても、このようなエラーが発生します。解析中に何か間違ったことをしていると確信しています。提案してください。以下はサーブレットコードです:

MsgParser msgp = new MsgParser(); 

    Message msg = msgp.parseMsg("D:\\Demo.msg");

    String str1=msg.toString(); 

    byte[] b=str1.getBytes();// here b is byte array 

    //The below code is to open show the pop up so that user can save the msg file.. 

    response.setContentType("application/vnd.ms-outlook"+" ;charset=utf-8"); 

    response.setHeader("Content-Disposition","attachment;filename=" + "Demo.msg"); 

    ServletOutputStream servletOutputStream = response.getOutputStream(); 


    DataOutput dataOutput = new DataOutputStream(servletOutputStream); 

    if (b!= null) { 
        response.setContentLength(b.length); 

        for (int i = 0; i < b.length; i++) { 
            dataOutput.writeByte(b[i]); 
        } 

    } 
    if (servletOutputStream != null) { 

        servletOutputStream.flush(); 

        servletOutputStream.close(); 
    } 
    PrintWriter pw = response.getWriter();
    pw.println(dataOutput);
4

1 に答える 1

0

可能であれば、フィールド PR_RTF_IN_SYNC を FALSE に設定します。

message.setRtfInSync(false);

私は msgparse を使用しませんが、別のライブラリ (JMSG) を使用してこのフィールドを設定することが可能であり、「ファイルが存在しないか、ファイルにアクセスする権限がない可能性があるため、ファイルを開くことができません」という問題を修正する必要があります。

于 2013-05-02T05:59:27.257 に答える