我编写了一个servlet,它使用msgparser读取outlook .msg文件,并将内容写入ServletOutputStream,以便在网址被命中后可以下载。
我遇到的问题是,当我尝试在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);
答案 0 :(得分:0)
如果可能,将字段PR_RTF_IN_SYNC设置为FALSE:
message.setRtfInSync(假);
我不使用msgparse,但是使用另一个库(JMSG)可以设置此字段,并且应修复问题“无法打开文件,因为它可能不存在或者您可能没有访问文件的权限”