0

我编写了一个 servlet,它使用msgparser读取 Outlook .msg 文件并将内容写入 ServletOutputStream 以便在点击 url 后可以下载它。

我面临的问题是,当我尝试在 Outlook 中打开下载的文件时,该文件报告错误。

错误提示:无法打开文件,因为它可能不存在或者您可能无权访问文件......

即使文件格式正确(.msg),也会出现这样的错误。我确定我在解析时做错了什么。请建议。下面是servlet代码:

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 回答